DBRider在运行新测试类之前没有清除数据,我该如何解决?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DBRider在运行新测试类之前没有清除数据,我该如何解决?相关的知识,希望对你有一定的参考价值。
不确定是怎么回事。我有许多测试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构建服务器上运行它时,只有最后两个测试失败。当同事在他们的计算机上本地运行它们时,他们得到的结果与我相同。
该问题是由于DBUnit在测试之间未释放db连接所致,这导致正在运行的下一个测试无法获取数据库连接。我们仍然不确定为什么会这样,因为在进行合并之前,这些测试按预期工作。无论如何,都可以通过将cacheConnection
属性添加到@DBUnit
批注并将其设置为false
来解决,如下所示:
@DBUnit(allowEmptyFields = true, cacheConnection = false)
以上是关于DBRider在运行新测试类之前没有清除数据,我该如何解决?的主要内容,如果未能解决你的问题,请参考以下文章