Java 在JUnit测试之后清理数据库。

Java 在JUnit测试之后清理数据库。,java,junit,dbunit,Java,Junit,Dbunit,我有一个将行插入数据库的单元测试,我希望DBUnit在之后自动清理这些行(DBUnit最初不会插入这些行,这完全是被测试代码的责任) 谢谢。将插入/更新/删除查询设置为事务性查询,并在测试完成后回滚。将插入/更新/删除查询设置为事务性查询,并在测试完成后回滚。如果使用JUnit4,然后,您可以使用@AfterClass注释声明一个函数:它将在所有测试之后执行,您可以删除表中添加的所有行 在JUnit3中,您没有任何等效项,但可以重写tearDown()方法,该方法将在每次测试后执行(相当于JUn

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


谢谢。

将插入/更新/删除查询设置为事务性查询,并在测试完成后回滚。

将插入/更新/删除查询设置为事务性查询,并在测试完成后回滚。

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


在JUnit3中,您没有任何等效项,但可以重写
tearDown()
方法,该方法将在每次测试后执行(相当于JUnit4中
注释之后的

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


在JUnit3中,没有任何等效的方法,但是可以重写
tearDown()
方法,该方法将在每次测试后执行(相当于JUnit4中
@after
注释)。

如果在Before方法中分配外部资源(文件/DB),则需要在测试运行后释放它们。用@After注释公共void方法会导致该方法在测试方法之后运行。即使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();
    }
 }

如果在Before方法中分配外部资源(file/DB),则需要在测试运行后释放它们。用@After注释公共void方法会导致该方法在测试方法之后运行。即使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();
    }
 }

感谢解决方案,但提交逻辑存在于包含可测试代码的函数中,此外,我使用DB单元模拟DB,因此我无法控制测试中的提交。感谢解决方案,但提交逻辑存在于包含可测试代码的函数中,此外,我使用DB单元模拟DB,因此我无法控制测试中的提交函数,现在我如何在@After???@UdayReddy中使用DB unit删除插入的条目?编写一个delete查询并在After函数中执行语句。因此,在代码中@Juned让我们假设我在something()中对数据库进行了添加操作函数,现在我如何在@After???@UdayReddy中使用DB unit删除插入的条目?请编写一个delete查询并在After函数中执行该语句。