2013-07-22 99 views
3

我有一个基类,其中有一个TestInitializeTestCleanup。然后我有其他的测试类从这个类继承。 TestCleanup应该在派生类的测试失败时执行某些操作。在TestInitialize中MSTest失败时,为什么TestCleanup不会被执行?

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

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

+0

你能解释一下你为什么在TestInitialize中遇到异常吗?这不是我通常会期望发生的事情。 –

回答

2

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

如果您认为您所做的是正确的,并且您只是想在发生故障时抓住它,那么为什么不用Test-catch包装TestInitialize并在异常时调用您的代码或TestCleanup?

+0

这些是编码 - 用户界面测试。在我的TestInitialize中,我尝试打开应用程序并声明应用程序实际打开。这在我看来是有道理的,因为为什么我应该在每次测试中回忆这段代码。我的TestCleanup试图杀死应用程序,如果应用程序处于不良状态,这应该是必需的 – jgerstle

+0

@ilhbh,可能有点迟,但每次测试都会调用TestInitialize。如果只想调用它,则需要使用'ClassInitialize'来代替。 –

0

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

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

相关问题