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

.net 如何强制所有测试在NUnit中有一个类别?,.net,unit-testing,nunit,.net,Unit Testing,Nunit,我使用的是NUnit 2.5.3,但是如果NUnit的最新版本解决了我的问题,那么升级就不是问题了 我们有几个不同的测试类别。不同类型的测试将在不同风格的构建过程中运行(快速运行签入单元测试、所有单元测试和其他具有外部依赖性(数据库等)的测试,用于夜间等)。将真正的单元测试和具有外部依赖性的测试分离到不同的程序集中是一个长期目标,但我仍然希望在测试中强制使用类别 我希望确保所有测试方法都有一个使用有效类别名称定义的CategoryAttribute。有效的类别名称应该是我可以定义的列表中的名称。

我使用的是NUnit 2.5.3,但是如果NUnit的最新版本解决了我的问题,那么升级就不是问题了

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

我希望确保所有测试方法都有一个使用有效类别名称定义的CategoryAttribute。有效的类别名称应该是我可以定义的列表中的名称。然而,仅仅在每个测试方法上强制一个类别将是朝着正确方向迈出的一步


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

我认为没有办法确保所有测试都标记有Category属性-这就是为什么我总是将不同类型的测试拆分为不同的程序集(拆分遗留程序集应该不会太难,尤其是在使用诸如Resharper之类的工具时)。因此,您必须按照您所说的编写自己的工具,以加载程序集并进行验证

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

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

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


  • 请参阅:

    我认为没有办法确保所有测试都标记有Category属性-这就是为什么我总是将不同类型的测试拆分为不同的程序集(拆分旧程序集应该不会太难,尤其是在使用诸如Resharper之类的工具时)。因此,您必须按照您所说的编写自己的工具,以加载程序集并进行验证

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

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

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


  • 请参阅:

    您不需要自定义构建步骤来检查反射,而是将其放在测试中。您不需要自定义构建步骤来检查反射,而是将其放在测试中。感谢@Grzenio,我已经按照@Albin在其评论中的建议,走上了反射路线并实现了一个测试-它工作良好,为更静态的测试打开了大门分析。也谢谢你的提示-到目前为止,我一直在使用字符串常量作为类别名称,但我可能会像你说的那样考虑引入新属性。谢谢@Grzenio,我已经按照@Albin在评论中建议的方式进行了反射,并实现了一个测试-它工作得很好,为更多的静态分析打开了大门。谢谢你的提示ps也-到目前为止,我一直在使用字符串常量作为类别名称,但我可能会考虑像您所说的那样引入新属性。