0

テストケースがあります。VS2010 でテストケースを実行すると、テストケースに合格します。

しかし、後でテストケースが正しくないことがわかり、CheckStatus() メソッドのアサーションが失敗し、テストケースをデバッグするとアサーションが失敗しました。

では、テストケースが実行モードでパスする理由は何でしょうか?

    [TestMethod]
    public void TestMethod() {
        Invokable.Invoke(() => TestApplication.AnEvent+= CheckStatus);
        try {
            TestApplication.SearchCommand.Execute();
            Assert.AreEqual(State.Update, TestApplication.State);
        } finally {
            Invokable.Invoke(() => {
                TestApplication.AnEvent -= CheckStatus);
            });
        }
    }

    private void CheckStatus() {
        Assert.AreEqual(State.Initial, TestApplication.State);
    }
4

1 に答える 1

1

タイミングの問題のように見えます。おそらく、デバッグ モードでのコードの実行速度が遅いことが原因です。

Invokeクロススレッド通信を行っているという手がかりを与えるための呼び出し。その場合は、さらなるテストの前にスレッド間の同期方法を調べてください。呼び出しが呼び出される前にテストが実行されている可能性があるためです。

メソッドのThread.Sleep()前にこれを自分でテストできます。Execute()

于 2013-01-28T11:25:29.063 に答える