我有一个将行插入数据库的单元测试,我希望 DBUnit 之后自动清理这些行(DBUnit 最初不会插入这些行 - 这纯粹是被测试代码的责任)。
谢谢。
使您的 INSERT/UPDATE/DELETE 查询具有事务性,并在测试完成后回滚它们。
如果您使用 JUnit4,那么您可以声明一个带有@AfterClass
注释的函数:它将在所有测试之后执行,您可以删除您在表中添加的所有行。
在 JUnit3 中,您没有任何等效项,但您可以覆盖该tearDown()
方法,该方法将在每次测试后执行(等效@After
于 JUnit4 中的注解)。
如果在 Before 方法中分配外部资源(文件/数据库),则需要在测试运行后释放它们。使用 @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();
}
}