gpt4 book ai didi

java - 在单个事务下包装整个 DBUnit/JUnit 测试

转载 作者:搜寻专家 更新时间:2023-11-01 03:27:03 24 4
gpt4 key购买 nike

我四处搜索但未能确定以下方法是否可行/良好做法。基本上我想做的是:

创建使用 DBUnit 初始化数据的 JUnit 测试。运行多个测试方法,每个测试方法都使用相同的初始数据集。在每个测试方法之后回滚到初始 setUp 函数之后的状态。在所有测试方法运行后,回滚在 setUp 函数中所做的任何更改。此时数据库中的数据应该与运行 JUnit 测试类之前的数据完全相同。

理想情况下,我不必在每个测试用例之前重新初始化数据,因为我可以在设置后立即回滚到状态。

我能够回滚单个测试方法,但无法回滚所有测试方法运行后在 setUp 中所做的更改。

注意:我知道 DBUnit 的不同功能,例如 CLEAN_INSERT、DELETE 等。我正在使用 Spring 框架注入(inject)我的数据源。

示例布局如下:

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 测试之前的状态。

提前致谢

最佳答案

正如“setUp”一样,JUnit 提供了在每个测试方法之后执行的“tearDown”方法。你可以用来回滚。同样从 JUnit 4 开始,您有以下注释:

  • @BeforeClass:在运行测试用例中的任何测试之前运行一次
  • @Before:每次在测试方法之前运行
  • @After:每次测试方法后运行
  • @AfterClass:在执行完当前套件中的所有测试后运行一次

关于java - 在单个事务下包装整个 DBUnit/JUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11088594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com