新的JUnit 4.8.1 @Category渲染测试套件几乎已经过时了吗?

top*_*hef 12 java junit unit-testing junit4 test-suite

给出问题'如何运行属于某个类别的所有测试?' 答案是以下方法对测试组织更好吗?

  1. 定义包含所有测试的主测试套件(例如,使用ClasspathSuite)
  2. 设计足够的JUnit类别集合(足以表示每个理想的测试集合可由一个或多个类别识别)
  3. 使每个测试符合相关类别的资格
  4. 基于主测试套件和类别集定义目标测试套件

例:

  • 识别速度(慢速,快速),依赖(模拟,数据库,集成等),功能(填写适用类别),域(填写适用类别)等类别.
  • 要求每个测试都使用相关的类别进行适当的限定(标记).
  • 使用ClasspathSuite创建主测试套件(在类路径中找到所有测试)
  • 通过使用类别限定主测试套件来创建目标套件,例如模拟测试套件,快速数据库测试套件,域X测试套件的慢速集成等.

我的问题更像是征求这种方法与经典测试套件方法的批准率.一个无与伦比的好处是每个新测试都立即被相关套房包含,没有套件维护.一个问题是每个测试的正确分类.

Gab*_*bák 7

您必须考虑的权衡之一是恕我直言,类别在测试中定义,套件在外部定义.这意味着,当您使用套件时,您知道将运行哪些测试,但在使用类别时,您不知道除非您检查测试或简单运行它们.同时,当您使用测试套件查看测试时,您不知道它包含在哪个套件中,除非检查您的套件,但使用类别,您可以看到它.

  • @GabrielŠčerbák:请注意,JUnit*中的类别是*typechecked.提供给注释"Category"的值必须是类(或接口)文字,因此需要进行类型检查. (2认同)