NUnit and [SetUp] in base classes

后端 未结 2 1588
广开言路
广开言路 2021-01-01 08:29

I\'m looking at some test code using NUnit, which inherits from a base class containing a [SetUp] attribute:

public class BaseClass
{
   [SetUp]
   public vo         


        
2条回答
  •  有刺的猬
    2021-01-01 09:16

    Before NUnit 2.5 the previous answers were correct; you could only have a single [SetUp] attribute for a test.

    With NUnit 2.5 onwards you can have multiple methods decorated with the [SetUp] attribute. Therefore the below is perfectly valid in NUnit 2.5+:

    public abstract class BaseClass
    {
        [SetUp]
        public void BaseSetUp()
        {
            Debug.WriteLine("BaseSetUp Called")
        }
    }
    
    [TestFixture]
    public class DerivedClass : BaseClass
    {
        [SetUp]
        public void DerivedSetup()
        {
            Debug.WriteLine("DerivedSetup Called")  
        }
    
        [Test]
        public void SampleTest()
        {
            /* Will output
             *    BaseSetUp Called
             *    DerivedSetup Called
            */
        }
    }
    

    When inheriting NUnit will always run the '[SetUp]' method in the base class first. If multiple [SetUp] methods are declared in a single class NUnit cannot guarantee the order of execution.

    See here for further information.

提交回复
热议问题