NUnit TestFixtureSetUp多次运行?

时间:2012-07-03 18:06:04

标签: c# visual-studio-2010 nunit

我在Visual Studio 2010中使用NUnit 2.6和Visual NUnit进行了基本的测试设置。我的问题是,当我运行所有测试时,似乎FixtureSetup方法(具有TestFixtureSetUpAttribute)为每个运行一次测试。

我也尝试将Init代码放到构造函数中,但它给出了相同的结果。

测试本身向运行时报告运行时间,如0.003和0.032等等。

    [TestFixture]
    public class MODatabaseTests
    {
        [TestFixtureSetUp]
        public static void FixtureSetup()
        {
           // Perform heavy init (~1.5s)
        }

        [Test]
        public void TestA()
        {
            ...
        }

        [Test]
        public void TestB()
        {
            ...
        }

    }

1 个答案:

答案 0 :(得分:5)

如果您添加此代码,您可以确认您的怀疑:

    private static bool initialized = false;
    [TestFixtureSetUp]
    public static void FixtureSetup()
    {
        if (initialized) Assert.Fail("fixture setup called multiple times");
        initialized = true;
        ...
    }

测试运行器可以单独调用每个测试,而不是将TestFixture视为一组测试。

顺便说一句,我会在单元测试中避免使用static,因为如果你有任何静态变量,它们的状态将从每次运行中进行(虽然夹具类型需要这个)并且你失去了“单位”单元测试的一部分。