DBRider 未在新测试前清理数据 类 运行,我该如何解决?
DBRider is not cleaning the data before new tests classes run, how can I fix that?
不太确定这里发生了什么。
我有很多测试 classes 测试 Controllers
,它们工作了一段时间,但后来我不得不合并一个特别大的提交,在那之后第一个测试 class 运行s 符合预期,但之后的每一个都失败了。
我正在使用以下注释:
关于class:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = {MyServiceTestApplication.class})
@ActiveProfiles({"test"})
@EnableTestAuthentication
@DBRider
@DBUnit(allowEmptyFields = true)
public class MyControllerIT {
关于测试方法:
@Test
@DataSet(value = {"datasets/files.json", "datasets/setting.json"})
public void testGetMyDeltaInfo(){
在第一次测试后 运行,在接下来的两组测试中,数据库 returns 来自每个存储过程的 0 行。
如果我 运行 三组测试一次一个,它们都成功完成,每个 class 有 3 到 8 个测试。
我在这里错过了什么?
编辑:我尝试将 cleanBefore=true
属性 添加到 @DataSet
注释中,但没有任何区别。
编辑 2:——看起来问题可能出在 DBRider 解决问题之前;绑定到 rabbitmq 可能是一个问题。
编辑 3:兔子问题已经解决,DBRider 问题仍然存在。
有趣的是,当我在 jenkins 构建服务器上 运行 它时,只有最后 2 个测试失败。当同事 运行 在他们的本地机器上使用时,他们得到的结果与我相同。
问题是由于DBUnit在测试之间没有释放数据库连接,这导致下一个测试运行无法获取数据库连接。
我们仍然不确定为什么会这样,因为这些测试在我们进行合并之前按预期工作。
在任何情况下,它都通过将 cacheConnection
属性 添加到 @DBUnit
注释并将其设置为 false
来解决,如下所示:
@DBUnit(allowEmptyFields = true, cacheConnection = false)
不太确定这里发生了什么。
我有很多测试 classes 测试 Controllers
,它们工作了一段时间,但后来我不得不合并一个特别大的提交,在那之后第一个测试 class 运行s 符合预期,但之后的每一个都失败了。
我正在使用以下注释:
关于class:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = {MyServiceTestApplication.class})
@ActiveProfiles({"test"})
@EnableTestAuthentication
@DBRider
@DBUnit(allowEmptyFields = true)
public class MyControllerIT {
关于测试方法:
@Test
@DataSet(value = {"datasets/files.json", "datasets/setting.json"})
public void testGetMyDeltaInfo(){
在第一次测试后 运行,在接下来的两组测试中,数据库 returns 来自每个存储过程的 0 行。
如果我 运行 三组测试一次一个,它们都成功完成,每个 class 有 3 到 8 个测试。
我在这里错过了什么?
编辑:我尝试将 cleanBefore=true
属性 添加到 @DataSet
注释中,但没有任何区别。
编辑 2:——看起来问题可能出在 DBRider 解决问题之前;绑定到 rabbitmq 可能是一个问题。
编辑 3:兔子问题已经解决,DBRider 问题仍然存在。
有趣的是,当我在 jenkins 构建服务器上 运行 它时,只有最后 2 个测试失败。当同事 运行 在他们的本地机器上使用时,他们得到的结果与我相同。
问题是由于DBUnit在测试之间没有释放数据库连接,这导致下一个测试运行无法获取数据库连接。
我们仍然不确定为什么会这样,因为这些测试在我们进行合并之前按预期工作。
在任何情况下,它都通过将 cacheConnection
属性 添加到 @DBUnit
注释并将其设置为 false
来解决,如下所示:
@DBUnit(allowEmptyFields = true, cacheConnection = false)