在JUnit测试后清理数据库。

时间:2013-05-29 12:53:12

标签: java junit dbunit

我有一个将行插入数据库的单元测试,我希望DBUnit能够在之后自动清理这些行(DBUnit最初不会插入这些行 - 这完全是被测试代码的责任)。

感谢。

3 个答案:

答案 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();
    }
 }