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