【问题标题】:Running TestFixtures in particular order by using NUnit-Console runner使用 NUnit-Console runner 以特定顺序运行 TestFixtures
【发布时间】:2020-02-07 12:31:09
【问题描述】:

我们使用 NUnit 来实现 GUI 测试。我们有多个专注于一组应用程序功能的 TestFixture(测试套件)。测试套件具有不同的执行优先级(例如:在运行 Set B 之前需要验证 Set A,因为 Set B 使用来自 Set A 的功能)。

我的问题是:有什么方法可以使用 NUnit-Console 按给定顺序运行测试套件?

我尝试为每个测试套件传递参数 /test,参数是按测试套件执行优先级顺序传递的,但它没有按我预期的那样工作,测试套件没有按要求的顺序执行。

该行类似于:“[nunit-console runner path]”/test Tests.TestSuiteWithPriority01 /test Tests.TestSuiteWithPriority02 tests.dll

【问题讨论】:

    标签: testing nunit ui-testing nunit-3.0 nunit-console


    【解决方案1】:

    --test 命令行选项用于构造一个过滤器,它决定运行哪些测试。它不影响顺序 - 没有命令行选项与顺序有关。 NUnit 在检查测试时将创建的过滤器应用于测试,一次决定是否应该执行一个测试。

    选项的顺序和 NUnit 检查测试的顺序都与它们的执行顺序没有任何关系。执行顺序由以下决定:

    1. 您在测试中使用的任何 OrderAttributes
    2. 如果不使用此类属性,则未指定顺序。 (*)

    您可以在任何夹具或方法上指定[Order(n)]。那些带有OrderAttribute 的项目首先执行,从n 的最小值开始。如果您正在并行运行测试,则该顺序不能保证在第一个测试运行时不会启动后续测试。您可以确保不并行运行此类测试。

    另请参阅文档:https://github.com/nunit/docs/wiki/Order-Attribute

    *注意:有些人使用测试的字母顺序。某些版本的 NUnit,在某些环境中使用该顺序。 NUnit 不保证它,因此依赖它不是一个好主意。

    【讨论】:

    • 我尝试在您提供的文档中的测试夹具(测试类)上应用 order 属性,但编译器说:“属性 'Order' 在此声明类型上无效。它仅对方法声明有效。”。根据文档的第一句话,我认为应该允许在类上使用属性。
    • 在这种情况下,我怀疑您使用的是旧版本的 NUnit。我指出的文档是最新的……即 nunit 框架 3.12,OrderAttribute 适用于从 3.8 版开始的类,于 2017 年 8 月发布。
    • 你是对的,在将 NUnit 更新到最新版本后,它允许我在 TestFixture 上添加属性。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-08
    相关资源
    最近更新 更多