NUnit - FixtureSetup

### TestFixtureSetUpAttribute (NUnit 2.1 / 2.5)

This attribute is used inside a TestFixture to provide a single set of functions that are performed once prior to executing any of the tests in the fixture.

Before NUnit 2.5, a TestFixture could have only one TestFixtureSetUp method and it was required to be an instance method.

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

If a TestFixtueSetUp method fails or throws an exception, none of the tests in the fixure are executed and a failure or error is reported.

#### Example:

C#
VB
C++
J#

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

      [TestFixture]
      public class SuccessTests
      {
        [TestFixtureSetUp] public void Init()
        { /* ... */ }

        [TestFixtureTearDown] public void Cleanup()
        { /* ... */ }

        [Test] public void Add()
        { /* ... */ }
      }
    }

    Imports System
    Imports Nunit.Framework

    Namespace Nunit.Tests

      <TestFixture()> Public Class SuccessTests
        <TestFixtureSetUp()> Public Sub Init()
        ' ...
        End Sub

        <TestFixtureTearDown()> Public Sub Cleanup()
        ' ...
        End Sub

        <Test()> Public Sub Add()
        ' ...
        End Sub
      End Class
    End Namespace

    #using <Nunit.Framework.dll>
    using namespace System;
    using namespace NUnit::Framework;

    namespace NUnitTests
    {
      [TestFixture]
      public __gc class SuccessTests
      {
        [TestFixtureSetUp] void Init();
        [TestFixtureTearDown] void Cleanup();

        [Test] void Add();
      };
    }

    #include "cppsample.h"

    namespace NUnitTests {
      // ...
    }

    package NUnit.Tests;

    import System.*;
    import NUnit.Framework.TestFixture;

    /** @attribute NUnit.Framework.TestFixture() */
    public class SuccessTests
    {
      /** @attribute NUnit.Framework.TestFixtureSetUp() */
      public void Init()
      { /* ... */ }

      /** @attribute NUnit.Framework.TestFixtureTearDown() */
      public void Cleanup()
      { /* ... */ }

      /** @attribute NUnit.Framework.Test() */
      public void Add()
      { /* ... */ }
    }

### Inheritance

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

Before NUnit 2.5, you were permitted only one TestFixtureSetUp method. If you wanted to have some TestFixtureSetUp functionality in the base class and add more in the derived class you needed to call the base class method yourself.

With NUnit 2.5, you can achieve the same result by defining a TestFixtureSetUp method in the base class and another in the derived class. NUnit will call base class TestFixtureSetUp methods before those in the derived classes.

Note: Although it is possible to define multiple TestFixtureSetUp 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.

#### See also...

- SetUpAttribute
- TearDownAttribute
- TestFixtureTearDownAttribute
- SetUpFixtureAttribute