为什么JUnit Suite类(在我的情况下称为TestSuite.class)不执行自己的Test,Before和After注释?它只展示自己的BeforeClass,AfterClass,然后是套件测试类的所有注释。我通过围绕这一理论创建一个测试项目证明了这一点:https://gist.github.com/djangofan/5033350
任何人都可以向我介绍这个解释的地方吗?我需要真正理解这一点。
答案 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
或任何规则。)