我在Java Web应用程序中使用Selenium GUI测试。 由于这些测试实际上是客户端,我们如何在运行测试后回滚数据库?
答案 0 :(得分:1)
我的猜测是你无法“回滚”数据库,因为Web应用程序通常会在请求之间提交事务。
您需要实现自己的自定义回滚。也许您可以为每个测试创建一个新用户,并在测试后删除该用户所做的任何更改。或者您可能希望实现command pattern。
您可能还会发现级联删除有用
答案 1 :(得分:1)
你所追求的是Fixture Teardown Patterns。因为您需要跟踪测试中创建的所有资源,并在拆解期间自动销毁/释放它们。我显然不了解您的框架,但对于这种情况
运行测试后回滚数据库
一个好的候选人是Inline Teardown。它包括在结果验证后立即在测试方法结束时的拆卸逻辑。像这样:
答案 2 :(得分:1)
最近我参加了关于docker的演讲。演讲者正在创建一个带有mysql数据库的docker容器,用于演示目的。我立即考虑如何使用它进行集成测试,因为您可以轻松地创建一个干净的数据库实例。
我正在搜索是否已经有一些最佳做法,并在网站上找到了这些做法
我正在评估如何整合这个,但我相信这是我(希望你)正在寻找的东西。 工作流程将是:
答案 3 :(得分:0)
感谢您的建议。 我决定使用mysqldump来达到这个目的。在Ant中,备份并在每次批处理测试之前和之后恢复测试数据库。