【发布时间】:2010-12-19 01:29:46
【问题描述】:
是否可以在 ClassCleanup 中嵌套 TestMethods 并让它们像 TestMethods 一样运行/表现,而不是常规方法调用?
我有一个 TestClass 来测试我为管理进程而创建的 AppMngr 类。我测试了打开/关闭应用程序的能力(例如 MyNotepadMngrClass.Open() 和 ...Close())。我还有几个在该进程中工作的类(例如 MyNotepadWorkerClass.WriteLine() 或 ...DoSomething() )。在测试其他类时,我需要启动记事本并在完成后关闭它。 ClassInitialize/ClassCleanup 是显而易见的地方。但我想确认记事本已关闭。
所以我为关闭操作创建了一个静态 [TestMethod]。我从 MyNotepadWorkerTestClass 中的 ClassCleanup 调用它。它可以很好地执行关闭操作。但如果我添加类似 -- Assert.IsFalse(true); -- 在我的 close 方法的主体中,测试运行不会失败。
如果我试图做的事情根本上错误,请告诉我。感谢您提供任何帮助。
附:嘿 TestStand 伙计们,我正在寻找 RunSelectedStep 期间的 Setup/Ceanup 行为。 TestDriven.NET 给了我 RunSelectedStep。那么如何在 ClassInitialize 和 ClassCleanup 期间捕获失败。
【问题讨论】:
-
没有一些源代码很难回答这个问题。 “断言.IsFalse(真);”如果在 try...catch(Exception) 块中执行,不会使测试失败,因为失败的断言通过 AssertExceptions 传播(至少在 nunit 中)。如果 AssertExceptions 被 catch(Exception) 捕获,nunit 将不会得到它。
-
假设没有抛出异常的简单情况,即。其中 Assert.IsFalse(true) 会像您预期的那样失败。
-
我不确定我是否理解您在 TestStand 方面的问题...如果您右键单击 TestStand 中的一个步骤并使用“运行选定步骤”选项,它实际上会运行所有步骤在设置和清理步骤组中...这不是您要找的吗?
-
@JJ,在 TS 中,您可以将 TestSteps(或本例中的 TestMethods)放在设置和清理步骤组中。
标签: c# unit-testing