【问题标题】:JUnit Test Cases @Before and @After annotationsJUnit 测试用例 @Before 和 @After 注解
【发布时间】:2013-01-21 12:39:56
【问题描述】:
我们遵循以下做法为我们的方法编写 JUnit 测试。
现在我的问题是,我们是应该通过在@after 方法中编写代码来丢弃测试数据来删除我们输入的所有数据,还是就这样?
我知道我们可以使其可配置,但最佳做法是什么?保留或删除它。根据我的直觉,删除应该更好,就好像 db 中已经有一些重复数据一样 - 它可能会触发错误的真或假。
【问题讨论】:
标签:
java
unit-testing
junit
【解决方案1】:
作为最佳实践,我建议在每次测试之间清除数据存储,以确保每个测试与其他测试隔离。
如果您想保持某些设置有效(例如来自@BeforeClass),这可以使用@After 方法完成。也可以在 @Before 方法中完成,例如通过为每个测试使用新实例覆盖变量,如果这样做,则不需要在测试后进行清理。
要清理@BeforeClass 方法的设置,您应该使用@AfterClass,例如关闭数据库连接或类似的只需执行一次的操作。但这并不是所有类型的单元测试都需要的。
【解决方案2】:
这取决于您对“不要重复自己”原则的坚持程度。还值得记住的是,在每个@Test 和@AfterClass 都在所有@Test 运行之后调用了@After。有了这种粒度,删除重复项应该很简单,但仍然拆分那些只应在最后或每次测试后运行的任务。