我有一个基类,其中有一个TestInitialize
和一个TestCleanup
。然后我有其他从这个类继承的测试类。TestCleanup
应该在派生类的测试失败时执行某些操作。
TestCleanup
在实际测试中测试失败时执行。然而,当TestInitialize
中的测试失败时,TestCleanup
甚至不会被执行。为什么会发生这种情况?有没有办法让TestCleanup
被调用?
我不认为TestInitialize
和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函数。但如果可以的话,那就这么做。