JUnit测试用例@Before和@After注释

时间:2013-02-06 10:39:29

标签: java unit-testing junit

我们遵循以下惯例为我们的方法编写JUnit测试。

  • 每个方法都有自己的类,它包含该方法所需的所有测试。例如:class test {...}

  • @Before将包含“实体”等方法的必需条件设置,这样当我们执行编辑时,我们不需要复制/粘贴代码以在每个方法级别添加实体。

现在我的问题是,我们是否应该通过编写代码来删除我们输入的所有数据,以便在@after方法中删除测试数据,或者只是让它成为?

我知道我们可以让它可配置,但最佳做法是什么?保留或删除它。根据我的直觉,删除应该更好,好像数据库中已经存在一些重复数据 - 它可能触发错误的真或假。

2 个答案:

答案 0 :(得分:3)

这取决于你遵守“不要重复自己”的原则。同样值得记住的是,在@After之后调用了@Test,并且在所有@AfterClass运行后调用了@Test。使用这种粒度,删除重复应该很简单,但仍然应该分割那些应该只在最后或每次测试之后运行的任务。

答案 1 :(得分:2)

作为最佳实践,我建议在每次测试之间清除数据存储,以保证每个测试都与其他测试隔离。

如果您想保留一些设置(例如,来自@After),可以使用@BeforeClass方法完成此操作。它也可以在@Before方法中完成,例如通过为每个测试覆盖带有新实例的变量,如果这样做,则在测试后不需要清理。

要清理@BeforeClass方法的设置,您应该使用@AfterClass来关闭数据库连接或类似的事情,只需要执行一次。但是每种单元测试都不需要这样做。