我有一个将行插入数据库的单元测试,我希望DBUnit能够在之后自动清理这些行(DBUnit最初不会插入这些行 - 这完全是被测试代码的责任)。
感谢。
答案 0 :(得分:1)
让您的INSERT / UPDATE / DELETE查询进行事务处理,并在测试完成后将其回滚。
答案 1 :(得分:1)
如果您使用JUnit4,那么您可以使用@AfterClass
注释声明一个函数:它将在所有测试之后执行,您可以删除在表中添加的所有行。
在JUnit3中,您没有任何等效项,但您可以覆盖tearDown()
方法,该方法将在每次测试后执行(相当于JUnit4中的@After
注释)。
答案 2 :(得分:0)
如果在Before方法中分配外部资源(文件/ DB),则需要在测试运行后释放它们。使用@After注释公共void方法会导致该方法在Test方法之后运行。即使Before或Test方法抛出异常,也保证所有@After方法都能运行。在超类中声明的@After方法将在当前类的那些之后运行。
示例将文件显示为资源,但您可以将其用于数据库清理。
public class Example {
File output;
@Before public void createOutputFile() {
output= new File(...);
}
@Test public void something() {
...
}
@After public void deleteOutputFile() {
output.delete();
}
}