代码之家  ›  专栏  ›  技术社区  ›  Alex Humphrey

我怎样才能强迫所有的测试在nunit中有一个单一的类别?

  •  1
  • Alex Humphrey  · 技术社区  · 15 年前

    我正在使用nunit 2.5.3,但是如果一个更新版本的nunit解决了我的问题,那么升级就不是问题了。

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

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

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

    1 回复  |  直到 15 年前
        1
  •  1
  •   Grzenio    15 年前

    我认为没有一种方法可以确保所有测试都标记有category属性——这就是为什么我总是将不同类型的测试拆分为不同的程序集(拆分旧程序集不太难,尤其是在使用Resharper等工具的情况下)。因此,您必须按照您所说的那样编写自己的工具,它将加载程序集并进行验证。

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

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

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

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