我有一个测试用例,当我在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);
}发布于 2013-01-28 19:25:29
看起来像是计时问题,可能是由于调试模式下的代码运行速度较慢导致的。
对Invoke的调用提供了一个线索,表明您正在进行跨线程通信。如果是这样,请在进一步测试之前查看如何在线程之间进行同步,因为有可能在调用调用之前测试正在运行。
您可以在使用Execute()方法之前使用Thread.Sleep()亲自测试这一点。
https://stackoverflow.com/questions/14560827
复制相似问题