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

Den*_*yba 3 c# nunit selenium-webdriver nunit-3.0

我试图以编程方式第二次运行测试,它存在于同一个项目中.

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

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

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

一个可能对我有用的好解决方案是这个问题,但它需要NUnit 3.

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

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

Cha*_*lie 7

缺少的方法和程序集是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);
Run Code Online (Sandbox Code Playgroud)

您应该引用nunit.engine.api程序集(而不是nunit.engine)才能使用它.假定您进行这些调用的类实现了ITestEventListener.