我们遵循以下惯例为我们的方法编写JUnit测试。
每个方法都有自己的类,它包含该方法所需的所有测试。例如:class test {...}
@Before将包含“实体”等方法的必需条件设置,这样当我们执行编辑时,我们不需要复制/粘贴代码以在每个方法级别添加实体。
现在我的问题是,我们是否应该通过编写代码来删除我们输入的所有数据,以便在@after方法中删除测试数据,或者只是让它成为?
我知道我们可以让它可配置,但最佳做法是什么?保留或删除它。根据我的直觉,删除应该更好,好像数据库中已经存在一些重复数据 - 它可能触发错误的真或假。
答案 0 :(得分:3)
这取决于你遵守“不要重复自己”的原则。同样值得记住的是,在@After
之后调用了@Test
,并且在所有@AfterClass
运行后调用了@Test
。使用这种粒度,删除重复应该很简单,但仍然应该分割那些应该只在最后或每次测试之后运行的任务。
答案 1 :(得分:2)
作为最佳实践,我建议在每次测试之间清除数据存储,以保证每个测试都与其他测试隔离。
如果您想保留一些设置(例如,来自@After
),可以使用@BeforeClass
方法完成此操作。它也可以在@Before
方法中完成,例如通过为每个测试覆盖带有新实例的变量,如果这样做,则在测试后不需要清理。
要清理@BeforeClass
方法的设置,您应该使用@AfterClass
来关闭数据库连接或类似的事情,只需要执行一次。但是每种单元测试都不需要这样做。