4

我在 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()
        {
            ...
        }

    }
4

1 回答 1

6

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

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

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

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

于 2012-07-03T18:18:29.073 回答