【问题标题】:When running NUnit and specifying a category, can all uncategorized tests be included too?运行 NUnit 并指定类别时,是否也可以包含所有未分类的测试?
【发布时间】:2010-09-24 21:19:36
【问题描述】:

我们有数百个测试类,其中有几十个标有以下属性: [测试夹具] [明确] [类别(“集成测试”)] 所以它们只会在我们的通宵自动化构建中运行。其余的 TestFixture 没有指定类别(也没有标记为 Explicit)。

这是我们为执行测试而运行的 NAnt 任务:

<nunit2>
    <test>
        ...
        <categories>
            <include name="IntegrationTests" />
        </categories>
        ...
    </test>
</nunit2>

这当然不会执行任何未分类的测试。

我希望能够做这样的事情:

<nunit2>
    <test>
        ...
        <categories>
            <include name="*" />
            <include name="IntegrationTests" />
        </categories>
        ...
    </test>
</nunit2>

所有未分类的测试将与集成测试一起运行。这可能吗?如果有,语法是什么?

(注意:我正在寻找如上所述的 NAnt 解决方案或 NUnit 命令行解决方案。我当然可以使用不同的选项运行 NUnit 两次,或者将类别放在我所有的 TestFixture 上。这些是解决方法如果必须,我可以使用,但能够直接指定未分类的测试会更酷。)

【问题讨论】:

    标签: nunit nant categories explicit nant-task


    【解决方案1】:

    我在同一条船上,一直很沮丧,直到我发现 Category 属性不仅可以应用于测试或测试夹具,还可以应用于整个程序集。

    我有两个测试程序集,其中包含我在本地运行的测试,还有一个包含仅应在构建服务器上运行的测试。我在前两个项目的 AssemblyInfo.cs 中添加了这个属性:[assembly: NUnit.Framework.Category("Always")]。正如您所描述的,第三个测试项目使用像 [Explicit, Category("PublicDatabase")] 这样的类别属性。构建服务器使用 /include=Always,PublicDatabase 调用 NUnit 并获得所需的结果:前两个程序集中的所有测试都运行,而第三个程序集中只有 PublicDatabase 测试运行。

    当我在前两个项目上本地运行 NUnit 时,我只是在单个程序集上运行它,根本不需要指定类别。

    【讨论】:

    • IIUC,这不仅会运行“所有未分类的测试”。它还将运行 所有 测试(来自具有程序集级别类别的程序集),包括其中具有明确类别的任何测试(我假设类别是附加的)?
    【解决方案2】:

    不,鉴于您的情况,单次运行 NUnit 无法完成您想做的事情。如果您取消了显式属性,您可以通过排除所有您不想要的分类测试在一次运行中完成。

    基本上,如果您跳转到类别,您的所有测试都应该被分类。

    【讨论】:

    • 如果有办法确保对所有测试进行分类,我会接受吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 2021-08-14
    • 2012-07-03
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多