运行 Selenium GUI 测试后回滚数据库

Rollback Database after running Selenium GUI tests

我在 Java Web 应用程序中使用 Selenium GUI 测试。 由于这些测试实际上是客户端,我们如何在 运行 测试后回滚数据库?

我的猜测是您不能 'roll back' 数据库,因为 Web 应用程序通常在请求之间提交事务。

您需要实施自己的自定义回滚。也许您可以为每个测试创建一个新用户,并在测试后删除该用户所做的任何更改。或者,也许您想实施 command pattern.

您可能还会发现级联删除很有帮助

你要找的是Fixture Teardown Patterns。由于您需要跟踪在测试中创建的所有资源,并在 Teardown 期间自动 destroy/free 它们。我显然不知道你的框架,但对于这种情况

rollback database after running a test

一个好的候选人是Inline Teardown。它在结果验证后立即在测试方法末尾包含拆卸逻辑。像这样:

最近我参加了一个关于 docker 的演讲。为了演示目的,演讲者正在创建一个带有 mysql 数据库的 docker 容器。我立即在考虑如何使用它进行集成测试,因为您可以轻松创建一个干净的数据库实例。

我正在搜索是否已经有一些最佳实践,并在网站上找到了这些实践

我正在评估如何整合它,但我相信这就是我(希望你)一直在寻找的东西。 工作流程为:

  1. 测试执行
  2. 从空
  3. 图像启动 docker 容器
  4. 用主数据填充数据库(如有必要)
  5. 运行 测试
  6. 扔掉docker个容器

感谢您的建议。 为此,我决定使用 mysqldump。在 Ant 中,在每次批测试之前和之后备份和恢复测试数据库。