在自动化测试中使用Docker
在构建自动化测试实验台时,使用Docker会非常方便。它在功能性的级别上添加了一些单元测试的特性。如果你的应用由集群中的几个服务器组件构成,你可以用一些容器来模拟整个集群。Docker为集群提供了虚拟网络,在网络层面上让集群中的容器交互。
Docker可以很容易将容器恢复到一个已知的状态。如果你在Docker容器中运行测试数据库,你可以很轻松地将数据库恢复到测试开发之前的相同状态。这和单元测试中After方法恢复环境类似。
持续集成服务器Jenkins已经支持启动和停止容器,在使用Docker做自动化测试时会比较有用。
使用Docker Compose来运行你需要的容器也是一个有用的选择。
Docker还很年轻,使用Docker做测试自动化有时候需要编写并不优雅的胶水代码(glue code)。
举个简单的例子,启动可以交互的一个数据库容器和一个应用服务器容器。启动容器的基本过程比较简单,并且可以通过shell脚本或者Docker Compose来完成。但是,由于我们要在已经启动的应用服务器上运行测试,如何才能知道它已经正常启动了?在WildFly容器的场景下,除了监控输出日志中特定字符串的出现或者轮询web socket之外,没有什么明显方式判断容器的运行状态。在任何情况下,这些hack的方式都不甚优雅,而且实现起来比较耗时。尽管最终的结果还是能值回票价的。