我们有几百个测试类,其中几十个标有以下属性: [的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上放置类别。这些是解决方法,如果必须,我可以使用,但是能够直接指定未分类的测试会更酷。)
答案 0 :(得分:8)
我在同一条船上,并且感到沮丧,直到我发现Category属性不仅可以应用于测试或测试夹具,而且可以应用于整个组件。
我有两个测试程序集,其中包含我在本地运行的测试,还有一个测试程序集的测试只能在构建服务器上运行。我在前两个项目的AssemblyInfo.cs中添加了这个属性:[assembly: NUnit.Framework.Category("Always")]
。第三个测试项目使用类别属性,如[Explicit, Category("PublicDatabase")]
所描述的。构建服务器使用/include=Always,PublicDatabase
调用NUnit并具有所需的结果:前两个程序集中的所有测试都运行,并且只运行第三个程序集中的PublicDatabase
个测试。
当我在前两个项目上本地运行NUnit时,我只是在各个程序集上运行它,而不必指定类别。
答案 1 :(得分:0)
不,鉴于你的情况,在一次NUnit运行中无法做你想做的事。如果你取消了显式属性,你可以通过排除你不想要的所有分类测试在一次运行中完成。
基本上,如果您跳转到类别,则应对所有测试进行分类。