如何使用NUnit 3(C#)从代码运行特定的NUnit测试

时间:2016-02-23 13:28:03

标签: c# selenium-webdriver nunit nunit-3.0

我正在尝试以编程方式第二次运行测试,这些测试存在于同一个项目中。

因为如果SetUp测试失败,那么测试和SetUp将再次运行。

我使用Selenium Webdriver运行测试,然后有很多SetUp个预处理操作。例如:预先行动是购买一张票,然后运行一组测试以检查是否一切正常。

通常我的SetUp预操作失败(发生错误),然后没有运行测试。我想给他们第二个改变,就是再次运行它们。

可能对我有用的一个很好的解决方案是this SO question,但它需要NUnit 3.

NUnit 3中没有NUnit.Core包,因此解决方案显示了很多错误。如果我的测试方法放在同一个项目中,我也不确定是否必须使用它(所以我可能不需要加载程序集)。

如果将此方法放在同一个项目中,如何从代码运行测试方法的任何想法?

1 个答案:

答案 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。