4

Visual Studio 2010 で NUnit 2.6 と Visual NUnit を使用した基本的なテスト セットアップがあります。私の問題は、すべてのテストを実行しているときに、FixtureSetup メソッド (TestFixtureSetUpAttribute を持つ) がテストごとに 1 回実行されているように見えることです。

また、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 に答える