0

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

谢谢。

4

3 回答 3

1

使您的 INSERT/UPDATE/DELETE 查询具有事务性,并在测试完成后回滚它们。

于 2013-05-29T12:56:45.847 回答
1

如果您使用 JUnit4,那么您可以声明一个带有@AfterClass注释的函数:它将在所有测试之后执行,您可以删除您在表中添加的所有行。

在 JUnit3 中,您没有任何等效项,但您可以覆盖该tearDown()方法,该方法将在每次测试后执行(等效@After于 JUnit4 中的注解)。

于 2013-05-29T12:57:09.087 回答
1

如果在 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();
    }
 }
于 2013-05-29T12:57:23.050 回答