当MSTest在TestInitialize中失败时,为什么';t执行TestCleanup

本文关键字:TestCleanup 执行 为什么 MSTest TestInitialize 失败 | 更新日期: 2023-09-27 18:24:18

我有一个基类,其中有一个TestInitialize和一个TestCleanup。然后我有其他从这个类继承的测试类。TestCleanup应该在派生类的测试失败时执行某些操作。

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

我不认为TestInitializeTestCleanup在基类中这一事实会导致这个问题,我只是想提供更多信息,以防万一。

当MSTest在TestInitialize中失败时,为什么';t执行TestCleanup

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

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

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

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

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

在谈论CodedUI时,testinitialize中可能会出现很多问题,因此请使用TryCatch,并在Catch中手动调用TestCleanup。更正确的是,在Catch中,我们以与TestCleanup相同的方式杀死应用程序/浏览器。我们不调用cleanup函数。但如果可以的话,那就这么做。