【问题标题】:How to run a specific NUnit test from code using NUnit 3 (C#)如何使用 NUnit 3 (C#) 从代码中运行特定的 NUnit 测试
【发布时间】:2016-02-23 13:28:02
【问题描述】:

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

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

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

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

this SO question 可能对我有用,但它需要 NUnit 3。

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

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

【问题讨论】:

  • 你试过Retry Attribute吗? (特别注意第三点——你需要做出当前抛出 AssertionException 的事情)

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


【解决方案1】:

缺少的方法和程序集是 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多