MTS*_*MTS 7 nant nunit explicit nant-task categories
我们有几百个测试类,其中几十个标有以下属性:[TestFixture] [Explicit] [Category("IntegrationTests")]因此它们只能在我们的夜间自动构建中运行.其余的TestFixtures没有指定类别(也没有标记为Explicit).
这是我们为执行测试而运行的NAnt任务:
<nunit2>
<test>
...
<categories>
<include name="IntegrationTests" />
</categories>
...
</test>
</nunit2>
Run Code Online (Sandbox Code Playgroud)
当然,这不会执行任何未分类的测试.
我希望能够做到这样的事情:
<nunit2>
<test>
...
<categories>
<include name="*" />
<include name="IntegrationTests" />
</categories>
...
</test>
</nunit2>
Run Code Online (Sandbox Code Playgroud)
所有未分类的测试都将与集成测试一起运行.这可能吗?如果是这样,语法是什么?
(注意:我正在寻找一个NAnt解决方案,如上所述,或NUnit命令行解决方案.我当然可以使用不同的选项运行NUnit两次,或者在我的所有TestFixtures上放置类别.这些是我的解决方法如果必须,可以使用,但是能够直接指定未分类的测试会更酷.)
我在同一条船上,并且感到沮丧,直到我发现Category属性不仅可以应用于测试或测试夹具,而且可以应用于整个组件.
我有两个测试程序集,我在本地运行测试,另外一个测试程序只能在构建服务器上运行.我在前两个项目的AssemblyInfo.cs中添加了这个属性:[assembly: NUnit.Framework.Category("Always")].第三个测试项目使用类似于[Explicit, Category("PublicDatabase")]您描述的类别属性.构建服务器使用NUnit调用/include=Always,PublicDatabase并具有所需的结果:前两个程序集中的所有测试都运行,而PublicDatabase第三个程序集中的测试只运行.
当我在前两个项目上本地运行NUnit时,我只是在各个程序集上运行它,而不必指定类别.
不,鉴于您的情况,无法在单次运行 NUnit 中完成您想要的操作。如果您取消了显式属性,则可以通过排除所有不需要的分类测试来在一次运行中完成此操作。
基本上,如果您跳转到类别,则所有测试都应该进行分类。