我在 Java Web 应用程序中使用 Selenium GUI 测试。由于这些测试实际上是客户端,我们如何在运行测试后回滚数据库?
问问题
2195 次
4 回答
2
您所追求的称为Fixture Teardown Patterns。因为您需要跟踪在测试中创建的所有资源并在 Teardown 期间自动销毁/释放它们。我显然不知道你的框架,但是对于这种情况
运行测试后回滚数据库
一个很好的候选者是Inline Teardown。它在结果验证后立即在测试方法结束时包含拆卸逻辑。像这样:
于 2015-11-03T11:33:29.640 回答
1
我的猜测是您不能“回滚”数据库,因为 Web 应用程序通常会在请求之间提交事务。
您需要实现自己的自定义回滚。也许您可以为每个测试创建一个新用户,并在测试后删除该用户所做的任何更改。或者,也许您想实现命令模式。
您可能还会发现级联删除很有帮助
于 2015-11-03T11:04:06.420 回答
1
最近我参加了一个关于docker的演讲。演讲者正在创建一个带有 mysql 数据库的 docker 容器,用于演示目的。我立即考虑如何使用它进行集成测试,因为您可以轻松创建一个干净的数据库实例。
我正在搜索是否已经有一些最佳实践并在网站上找到了这些
- TestContainers - 注意临时数据库容器链接
- 教程——Docker、JPA 和测试——一个完整的例子
我正处于评估如何整合它的阶段,但我相信这是我(希望你)正在寻找的。工作流程将是:
- 测试执行
- 从空图像启动 docker 容器
- 用主数据填充数据库(如有必要)
- 运行测试
- 扔掉 docker 容器
于 2015-11-06T10:26:39.857 回答
0
谢谢你的建议。为此,我决定使用 mysqldump。在 Ant 中,在每次批量测试之前和之后备份和恢复测试数据库。
于 2015-11-06T12:46:24.703 回答