在运行NUnit并指定类别时,是否也可以包含所有未分类的测试?

时间:2010-09-24 21:19:37

标签: nunit nant categories explicit nant-task

我们有几百个测试类,其中几十个标有以下属性:     [的TestFixture]     [显式]     [类别( “IntegrationTests”)] 所以它们只能在我们的夜间自动构建中运行。其余的TestFixtures没有指定类别(也没有标记为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两次,或者在我的所有TestFixtures上放置类别。这些是解决方法,如果必须,我可以使用,但是能够直接指定未分类的测试会更酷。)

2 个答案:

答案 0 :(得分:8)

我在同一条船上,并且感到沮丧,直到我发现Category属性不仅可以应用于测试或测试夹具,而且可以应用于整个组件。

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

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

答案 1 :(得分:0)

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

基本上,如果您跳转到类别,则应对所有测试进行分类。