运行我们的验收测试套件时,我们希望对定义的数据库状态执行每一次测试。如果其中一个测试会写入数据库(比如创建用户或其他东西),它当然不会影响以后的测试。快速复制大型MySQL数据库进行测试
我们已经考虑过几个选择来实现这个目标,但是在每个单独的测试之前复制整个数据库似乎并不是最好的解决方案(考虑可能的性能问题)。
还有一个想法是使用MySQL事务,但是我们的一些测试会导致很多HTTP请求,因此会产生不同的PHP进程,并且在完成完整测试后,它们会过早丢失事务以进行干净回滚。
是否有更好的方法来保证每个验收测试的定义数据库状态?我们希望保持简单,比解决方案如aufs
或btrfs
在系统级解决它。
关闭mysql,物理复制db文件,重启mysql。稍后,冲洗,重复。 –
技术上不是最有吸引力的解决方案,因为我们必须在每个测试用例中的每种测试方法之后执行此操作,但也许这是必要的!?感谢您的输入! – Johannes