我正在开发Web应用程序,并且我想使用Jetty / hsqldb进行一系列集成测试。因此,码头将旋转起来,Webdriver将单击一下,然后测试将完成,从而在数据库中留下一些垃圾。由于我想再进行1次测试,所以这是有问题的。
[在其他项目中,我们有一个函数以编程方式逐表删除行,但是该项目的数据库很复杂,因此在这里进行这项工作是不可行的。
最佳解决方案是保存hsql的已知状态,我可以在每次测试之前将其加载到数据库中。
另一个解决方案是删除并重新创建表。
在我完成的所有研究中,我仅发现模糊且不可重现的提示,因此,不胜感激。
在我们的项目中,我们使用dbUnit以便将每个测试的数据加载到空数据库中。测试将启动一个事务,并在不提交事务的情况下清除需要保存的所有内容。测试运行后,我们检查延迟的约束和回滚。这样,数据库始终保持为空,并且测试不会相互影响(串行运行时)。
为了使用一组相同的测试数据高效执行一系列测试,我们在插入测试数据后设置一个保存点,然后我们仅退回到该保存点,而不回滚所有内容。
总而言之,这是很多工作。无论如何,我们认为它为我们的项目带来了回报。
请考虑以下方法:
HSQLDB具有此用法的设置。
使用测试前的表和数据创建一个初始数据库。设置了hsqldb.files_readonly
属性,这可以防止对数据库的更改持久化到文件中。
通常使用此解决方案代替内存测试数据库。