SetupFixture不仅包含Setup / TearDown

时间:2010-11-03 15:33:51

标签: c# unit-testing nunit

是否可以将Tests添加到[SetupFixture],除了[SetUp]/[TearDown]之外,每次运行时也会自动调用

E.g:

[SetupFixture]
public class SetupFixture {

    [SetUp]
    public void Setup() {
        StaticObject.DoInit();
    }

    [SomethingThatIsCalledAutomaticallyToo]
    public void Setup_StaticObjectNamePropertyIsInitialized()
    {
        // Arrange
        var expected = "ObjectName!";

        // Act
        var actual = StaticObject.Name;

        // Assert
        Assert.AreEqual(expected.equals(actual));
    }

    // More Checks....

    [TearDown]
    public void TearDown() {
        StaticObject.DoEqualize();
    }
}

2 个答案:

答案 0 :(得分:1)

对于程序集或命名空间,SetupFixture只运行一次,具体取决于你放置它的位置。

为什么没有其他测试继承的抽象基类。每当我有一个具有多个实现的抽象类时,我都有一个用于测试基本功能的基本测试,然后为我想要测试的每个实现继承它。将为每个实现运行基础夹具中的测试。

答案 1 :(得分:0)

如果您仍想对其进行断言,则可以将该方法保留为测试。如果你想在每次测试之前或之后调用它,你可以像在普通方法调用中一样在该方法中调用它。

[SetUp]
public void Setup() {
    StaticObject.DoInit();

    Setup_StaticObjectNamePropertyIsInitialized()
}

[SomethingThatIsCalledAutomaticallyToo]
public void Setup_StaticObjectNamePropertyIsInitialized()
{
    // test stuff
}