3

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

4

4 回答 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 容器,用于演示目的。我立即考虑如何使用它进行集成测试,因为您可以轻松创建一个干净的数据库实例。

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

我正处于评估如何整合它的阶段,但我相信这是我(希望你)正在寻找的。工作流程将是:

  1. 测试执行
  2. 从空图像启动 docker 容器
  3. 用主数据填充数据库(如有必要)
  4. 运行测试
  5. 扔掉 docker 容器
于 2015-11-06T10:26:39.857 回答
0

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

于 2015-11-06T12:46:24.703 回答