我正在尝试以编程方式第二次运行测试,这些测试存在于同一个项目中。
因为如果SetUp测试失败,那么测试和SetUp将再次运行。
我使用Selenium Webdriver运行测试,然后有很多SetUp
个预处理操作。例如:预先行动是购买一张票,然后运行一组测试以检查是否一切正常。
通常我的SetUp预操作失败(发生错误),然后没有运行测试。我想给他们第二个改变,就是再次运行它们。
可能对我有用的一个很好的解决方案是this SO question,但它需要NUnit 3.
NUnit 3中没有NUnit.Core
包,因此解决方案显示了很多错误。如果我的测试方法放在同一个项目中,我也不确定是否必须使用它(所以我可能不需要加载程序集)。
如果将此方法放在同一个项目中,如何从代码运行测试方法的任何想法?
答案 0 :(得分:6)
缺少的方法和程序集是NUnit 2.6.4内部实现的一部分,从未打算供公众使用。你指出的解决方案只有在工作时“很棒”,但由于它使用内部类和方法,因此无法保证。
对于NUnit 3.0,你很幸运,因为现在有一个公共API用于运行测试。通过使用公开/已发布的API,您可以保证我们将来继续使用它。
API的文档现在位于Test-Engine-API。这是一个使用它的简单例子......
ITestEngine engine = TestEngineActivator.CreateInstance();
TestPackage package = new TestPackage("path/to/assembly");
ITestRunner runner = engine.GetRunner(package);
XmlNode result = runner.Run(this, TestFilter.Empty);
您应该引用nunit.engine.api程序集(而不是nunit.engine)才能使用它。假定您进行这些调用的类实现了ITestEventListener。