2010-08-24 73 views
1

我正在使用NUnit 2.5.3,但如果更新版本的NUnit解决了我的问题,它不会是升级的问题。如何强制所有测试在NUnit中有一个类别?

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

我想确保所有测试方法都有一个用有效类别名称定义的CategoryAttribute。一个有效的类别名称将来自我可以定义的列表中的一个。然而,只要在每个测试方法上强制实施一个类别就是朝着正确方向迈出的一步。

NUnit是否支持这种开箱即用的行为?是否有另外一个NUnit属性可以使用,而不是CategoryAttribute支持这种强制?或者正在实现一个自定义构建步骤,通过反射的方式来检查程序集?

+0

你不需要自定义生成步骤来检查与反思,把它放在一个试验来代替。 – 2010-08-24 10:05:48

回答

1

我不认为有一种方法,以确保所有的测试都标有分类属性 - 这就是为什么我总是分割不同类型的测试分为不同的组件(应该不会太难拆遗留组件特别是如果您使用的工具如Resharper)。所以你必须按照你所说的来编写你自己的工具来加载程序集并进行验证。

而且,这些想法可能会有所帮助:

  1. 可以放置在的TestFixture级别的类别属性,这样它会更容易一点要记住它,做验证

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

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

+0

谢谢@Grzenio,我已经走下了反思路线,并在@Albin的评论中提出了一个测试 - 它很好地工作,为更多的静态分析打开了大门。感谢提示也 - 我一直使用字符串常量到目前为类别名称,但我可能会看看像你说的引入新的属性。 – 2010-08-24 12:20:15