我已经四处搜索,但未能成功确定以下方法是否可行/良好做法。基本上我想做的是以下几点:
创建使用 DBUnit 初始化数据的 JUnit 测试。运行多个测试方法,每个测试方法都使用相同的初始数据集。在每个测试方法之后回滚到初始 setUp 函数之后的状态。在所有测试方法运行后,回滚在 setUp 函数中所做的任何更改。此时数据库中的数据应该与运行 JUnit 测试类之前的数据完全相同。
理想情况下,我不必在每个测试用例之前重新初始化数据,因为我可以在 setUp 之后立即回滚到状态。
我已经能够回滚单个测试方法,但在所有测试方法运行后无法回滚在 setUp 中所做的更改。
注意:我知道 DBUnit 的不同功能,例如 CLEAN_INSERT、DELETE 等。我正在使用 Spring 框架来注入我的数据源。
示例布局如下所示:
public class TestClass {
public void setUp() {
// Calls a method in a different class which uses DBUnit to initialize the database
}
public void runTest1() {
// Runs a test which may insert / delete data in the database
// After running the test the database is in the same state as it was
// after running setUp
}
public void runTest2() {
// Runs a test which may insert / delete data in the database
// After running the test the database is in the same state as it was
// after running setUp
}
// After runTest1 and runTest2 have finished the database will be rolled back to the
// state before any of the methods above had run.
// The data will be unchanged as if this class had never even been run
}
我将在开发数据库中运行测试,但是我不希望影响数据库中当前的任何数据。我可以在开始时运行 CLEAN_INSERT 来初始化数据,但是在所有测试方法运行之后,我希望数据恢复到运行 JUnit 测试之前的状态。
提前致谢