0

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

任何人都可以参考我解释的地方吗?我需要真正理解这一点。

4

3 回答 3

1

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

public class FeatureTestSuite {
  // the class remains empty <----- important for your question
}
于 2013-02-25T23:09:52.910 回答
0

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

也许用一个例子更好地解释。

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

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

于 2013-02-25T23:44:19.273 回答
0

正如其他人所说,这是因为 aTestSuite不是 a Test。它只是一个带有注解的类,用于对其他测试进行分组,这样运行起来更方便。

然而,它确实有一个特殊的属性,那就是 and 的@BeforeClass执行@AfterClass。启用这些以允许对套件进行全局设置/拆卸。它不执行任何测试(包括@After@Before或任何规则)。

于 2013-02-26T08:19:22.700 回答