当MSTest在TestInitialize中失败时,为什么不执行TestCleanup?

时间:2013-07-22 13:08:52

标签: c# visual-studio-2012 mstest

我有一个基类,其中包含TestInitializeTestCleanup。然后我有其他继承自这个类的测试类。当派生类的测试失败时,TestCleanup应该执行某些操作。

在实际测试中测试失败时执行TestCleanup。但是,当TestInitialize中的测试失败时,TestCleanup甚至无法执行。为什么会发生这种情况,有没有办法让TestCleanup被调用?

我认为TestInitializeTestCleanup在基类中的事实根本不会导致这个问题,我只是想提供更多信息以防它出现。< / p>

3 个答案:

答案 0 :(得分:6)

这是一个已知问题。看起来它已被报告给Microsoft connect。

http://connect.microsoft.com/VisualStudio/feedback/details/694337/testcleanup-method-does-not-run-when-it-should

答案 1 :(得分:2)

在我的意见中,您不应该在可能失败的TestInitialize中编写代码。

如果您认为您正在做的事情是正确的,并且您只是想在失败时捕获它,为什么不用try-catch包装TestInitialize并在异常时调用您的代码或TestCleanup?

答案 2 :(得分:0)

我们在TestInitialize中有一个try catch。它用于编码的UI测试,如果你不杀死应用程序/浏览器,下次连接到测试环境时,你将打开多个窗口(如果你正在部署和测试其中一个)。

在谈论CodedUI时,在testinitialize中有很多可能出错的东西,所以使用TryCatch,并在Catch中手动调用TestCleanup。更正确的是,在Catch中,我们以与TestCleanup相同的方式杀死应用程序/浏览器。我们不打电话给清理功能。但如果可以,那就这样做。