运行 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 容器。我立即在考虑如何使用它进行集成测试,因为您可以轻松创建一个干净的数据库实例。
我正在搜索是否已经有一些最佳实践,并在网站上找到了这些实践
- TestContainers - pay attention to the Temporary database containers link
- Tutorial – Docker, JPA and Testing - 一个完整的例子
我正在评估如何整合它,但我相信这就是我(希望你)一直在寻找的东西。
工作流程为:
- 测试执行
- 从空
图像启动 docker 容器
- 用主数据填充数据库(如有必要)
- 运行 测试
- 扔掉docker个容器
感谢您的建议。
为此,我决定使用 mysqldump。在 Ant 中,在每次批测试之前和之后备份和恢复测试数据库。
我在 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 容器。我立即在考虑如何使用它进行集成测试,因为您可以轻松创建一个干净的数据库实例。
我正在搜索是否已经有一些最佳实践,并在网站上找到了这些实践
- TestContainers - pay attention to the Temporary database containers link
- Tutorial – Docker, JPA and Testing - 一个完整的例子
我正在评估如何整合它,但我相信这就是我(希望你)一直在寻找的东西。 工作流程为:
- 测试执行
- 从空 图像启动 docker 容器
- 用主数据填充数据库(如有必要)
- 运行 测试
- 扔掉docker个容器
感谢您的建议。 为此,我决定使用 mysqldump。在 Ant 中,在每次批测试之前和之后备份和恢复测试数据库。