DBRider在运行新测试类之前没有清除数据,我该如何解决?

问题描述 投票:0回答:1

不确定是怎么回事。我有许多测试Controllers的测试类,它们在一段时间内都能正常工作,但是后来我不得不合并一个特别大的提交,然后第一个测试类按预期运行,但是此后每个失败。我正在使用以下注释:

在课堂上:

@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(){

在运行第一个测试之后,数据库在接下来的两组测试中从每个存储过程中返回0行。如果我一次成功运行三组测试,则它们全部成功完成,则每个类将进行3到8个测试。我在这里想念什么?

编辑:我尝试将cleanBefore=true属性添加到@DataSet批注中,但没有任何区别。编辑2:-看起来问题可能出在DBRider做事之前;绑定到rabbitmq可能是一个问题。

编辑3:Rabbit问题已经解决,DBRider问题仍然存在。有趣的是,当我在jenkins构建服务器上运行它时,只有最后两个测试失败。当同事在他们的计算机上本地运行它们时,他们得到的结果与我相同。

java mysql spring-boot integration-testing dbunit
1个回答
0
投票

该问题是由于DBUnit在测试之间未释放db连接所致,这导致正在运行的下一个测试无法获取数据库连接。我们仍然不确定为什么会这样,因为在进行合并之前,这些测试按预期工作。无论如何,都可以通过将cacheConnection属性添加到@DBUnit批注并将其设置为false来解决,如下所示:

@DBUnit(allowEmptyFields = true, cacheConnection = false)

© www.soinside.com 2019 - 2024. All rights reserved.