OneTimeTearDown Attribute

jnm2 edited this page Jun 14, 2017 · 4 revisions

This attribute is to identify methods that are called once after executing all the tests in a fixture. It may appear on methods of a TestFixture or a SetUpFixture.

OneTimeTearDown methods may be either static or instance methods and you may define more than one of them in a fixture. Normally, multiple OneTimeTearDown methods are only defined at different levels of an inheritance hierarchy, as explained below.

So long as any OneTimeSetUp method runs without error, the OneTimeTearDown method is guaranteed to run. It will not run if a OneTimeSetUp method fails or throws an exception.


namespace NUnit.Tests
  using System;
  using NUnit.Framework;

  public class SuccessTests
    public void Init()
    { /* ... */ }

    public void Cleanup()
    { /* ... */ }

    public void Add()
    { /* ... */ }


The OneTimeTearDown attribute is inherited from any base class. Therefore, if a base class has defined a OneTimeTearDown method, that method will be called after any test methods in the derived class.

You may define a OneTimeTearDown method in the base class and another in the derived class. NUnit will call base class OneTimeTearDown methods after those in the derived classes.


  1. Although it is possible to define multiple OneTimeTearDown methods in the same class, you should rarely do so. Unlike methods defined in separate classes in the inheritance hierarchy, the order in which they are executed is not guaranteed.

  2. OneTimeTearDown methods may be async if running under .NET 4.0 or higher.

See also...

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.