如何强制所有测试在NUnit中只有一个类别?

时间:2010-08-24 09:49:32

标签: .net unit-testing nunit

我正在使用NUnit 2.5.3,但如果更新版本的NUnit解决了我的问题,那么升级就不会有问题。

我们有几个不同的测试类别。在不同版本的构建期间将运行不同类别的测试(快速运行单元测试用于签入,所有单元测试以及具有外部依赖性的其他测试(数据库等),用于过度等待)。将真正的单元测试和具有外部依赖性的测试分离到不同的程序集中是一个较长期的目标,但我仍然希望在测试中强制执行类别。

我想确保所有测试方法都使用有效的类别名称定义了一个CategoryAttribute。有效的类别名称将是我可以定义的列表中的一个。但是,只需在每个测试方法上强制执行类别,都将是朝着正确方向迈出的一步。

NUnit是否支持这种开箱即用的行为?除了支持这种强制执行的CategoryAttribute之外,还有其他NUnit属性吗?或者正在实现一个自定义构建步骤,通过反射检查程序集的方式?

1 个答案:

答案 0 :(得分:1)

我认为没有办法确保所有测试都使用Category属性标记 - 这就是为什么我总是将不同类型的测试分成不同的程序集(分割旧程序集不应该太难,特别是如果你使用像Resharper这样的工具。因此,您必须编写自己的工具,如您所说,它将加载程序集并进行验证。

此外,这些想法可能有所帮助:

  1. 您可以将Category属性放在TestFixture级别,这样就可以更容易记住它并进行验证

  2. 您可以创建从“类别”属性派生的自定义属性。这样就更容易确保类别名称中没有拼写错误

  3. 请参阅:http://www.nunit.org/index.php?p=category&r=2.4.8