为什么JUnit套件类不执行自己的Test,Before和After注释?

时间:2013-02-25 23:05:04

标签: java junit suite

为什么JUnit Suite类(在我的情况下称为TestSuite.class)不执行自己的Test,Before和After注释?它只展示自己的BeforeClass,AfterClass,然后是套件测试类的所有注释。我通过围绕这一理论创建一个测试项目证明了这一点:https://gist.github.com/djangofan/5033350

任何人都可以向我介绍这个解释的地方吗?我需要真正理解这一点。

3 个答案:

答案 0 :(得分:1)

因为TestSuite本身不是Test。这些注释仅用于单元测试。有关示例,请参阅here

public class FeatureTestSuite {
  // the class remains empty <----- important for your question
}

答案 1 :(得分:0)

TestSuite是识别您希望应用某些常见行为的一组测试的方法。

或许可以通过一个例子更好地解释。

所以说你在数据库MyDB的Orders表上做了一些基本的CRUD测试。 每个人都需要mydb在那里,订单表存在,所以你把它们放在一个套件中。它设置数据库和表,测试运行,然后在套件超出范围之前删除数据库,对于下一次测试运行,一切都很好并且干净。否则你必须在每个昂贵的测试中做到这一点,或者更糟糕的是,先前测试的测试数据会导致其他测试数据显然随机失败,因为你会在它们之间创建隐式依赖。 还有其他方法可以实现同样的目的,但是它们会使你的测试变得混乱,你必须记得给他们打电话。

您不必测试它。如果没有完成,你的测试都不会执行。

答案 2 :(得分:0)

正如其他人所说,这是因为TestSuite不是Test。它只是一个带有注释的类,可以对其他测试进行分组,因此运行起来更方便。

但它有一个特殊属性,即执行@BeforeClass@AfterClass。这些允许允许套件的全局设置/拆卸。它不执行任何测试(包括@After@Before或任何规则。)