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()beforeExecute()方法自行测试。

于 2013-01-28T11:25:29.063 回答