我们有一些适用于Docker的Java代码。例如,一种方法可以创建docker网络,创建一个或两个容器,设置标签,标签,暴露一些端口等。
我们想测试一下,但是我们的单元测试变成了集成测试,因为每个测试实际上都在使用真正的Docker。与此相关的主要问题是测试的速度 - 我们有很多测试 - 对于开发人员而言,这是非常缓慢的。当测试运行时,机器几乎被冻结。
我们在Docker上有一个图层,另外我们使用docker java库与API对话。
问题:在这种情况下我们应该如何设计测试?
目前的想法是拥有'模拟' docker client,它接收命令,但不在真正的docker上发出它们;然后我们可以检查命令是否设置正确。为此,我们还需要模拟docker行为,比如调用docker ps
等。此外,我们无法确定我们发送的命令真的与Docker一起工作!想象一下,如果更改了docker版本,并且API中的某些内容发生了变化 - 我们将如何检测到它?
答案 0 :(得分:0)
听起来你已经走上了正轨,只是一般的建议:
docker ps
会改变吗?你甚至需要关心docker ps
吗? 不幸的是,加速测试套件可能会有一些信念的飞跃。如果没有任何明显的重复,那么移动到假的docker实现就不会像对实际docker那样进行强有力的断言。