Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何协调多容器(Docker)系统中的集成测试?_Docker_Testing_Automated Tests_Integration Testing - Fatal编程技术网

如何协调多容器(Docker)系统中的集成测试?

如何协调多容器(Docker)系统中的集成测试?,docker,testing,automated-tests,integration-testing,Docker,Testing,Automated Tests,Integration Testing,我继承了一个系统,该系统由两个异步处理消息的守护进程组成。我正试图找到一种干净的方法,将集成测试引入到这个系统中,同时将对现有程序的影响/风险降至最低。以下是对其职责的一个非常简单的概述: Process1轮询队列中的消息,并为其排出的每个消息在DB中插入一行 进程2轮询DB以查找进程1插入的行,进行一些计算,然后将文件存放到主机上的目录中并发送电子邮件 这些过程非常古老和复杂,我强烈倾向于避免以任何方式修改它们。我想做的是将它们放在一个容器中,并在其他容器中建立依赖项(队列、数据库、邮件服

我继承了一个系统,该系统由两个异步处理消息的守护进程组成。我正试图找到一种干净的方法,将集成测试引入到这个系统中,同时将对现有程序的影响/风险降至最低。以下是对其职责的一个非常简单的概述:

  • Process1轮询队列中的消息,并为其排出的每个消息在DB中插入一行

  • 进程2轮询DB以查找进程1插入的行,进行一些计算,然后将文件存放到主机上的目录中并发送电子邮件

这些过程非常古老和复杂,我强烈倾向于避免以任何方式修改它们。我想做的是将它们放在一个容器中,并在其他容器中建立依赖项(队列、数据库、邮件服务器)。这一部分很简单,但我不确定的是编排这些测试的最佳方法。由于这些进程以异步方式使用和生成输出,我需要轮询或等待预期结果(已发送邮件、已创建文件)

通常,我只需在我选择的语言(Java、Go等)的单个测试套件中编写一系列测试,并使setUp/tearDown钩子负责将环境重置为所需状态。但由于这些过程有很多内部状态,我担心在每次不同的测试之后,我无法成功地“清理”好。例如,如果一个测试未能在特定时间段内生成所需的输出,因此我将其标记为失败,但后续测试错误地标记为通过,因为原始测试用例确实输出了错误地归因于后续测试的内容(尽管比预期慢得多)。出于这些原因,我觉得我需要在每次测试之间重新创建一个世界

为此,我能看到的唯一选项是:

  • 使用shell脚本实际运行我的测试——让它启动容器,执行单个测试文件,然后为每个测试终止容器
  • 在我现有的测试框架中,遵循我通常的设置/拆卸模式,但调用
    docker
    终止并启动每个测试之间的容器
  • 我是否错过了另一个选择?是否有某种现有的框架或模式用于此类测试