1

我很清楚我想做的事情目前是不可能的,所以我正在寻找一种解决方法。


首先,假设一个基于微服务的、高度模块化的应用系统。每个微服务都有自己的单元测试,在其构建管道中运行,结果发布到 Azure DevOps——此时没有问题。

但是,需要在正确部署的应用程序系统上运行一些集成(几乎是端到端)测试(我们称之为集成测试套件)。这是在指定的环境(我们称之为集成测试环境)上完成的。测试套件将在几个不同的场景中执行,因此输出需要反映这一点(这意味着如果有 4 个场景,则测试结果输出文件将有 4 个测试套件)。

除此之外,应用系统版本和它们的测试结果之间必须有直接可见的联系。

为了实现这一点,有一个发布管道,其中前三个阶段是:部署到 DEV、部署到 INT 和运行集成测试。

自然地,该PublishTestResults任务用于呈现集成测试结果的一个很好的概述。集成测试编排器应用程序正在生成一个 JUnit XML/场景,并在测试结束时将它们提供给管道。


话虽如此,问题来了:需要提供有关在每个场景/套件中运行的测试的某些统计数据(比在 Z 秒内成功的 X/Y 测试更有趣的东西)。

我知道 Jenkins CI 似乎遵循 Dirk Jagdmann 描述的JUnit XML 格式,即一个<testsuite>元素可以有一个<system-out>元素,这将出现在测试套件可视化中。

不幸的是(!),Azure DevOps PublishTestResults 任务<system-out>在单个<testcase>元素下读取(上面的链接显示了结果格式映射)。具有讽刺意味的是,测试套件和测试用例刀片的呈现方式几乎相同 - 它们都有Debug您拥有手风琴的部分Error messageStack Trace等等(虽然不会被读取/填充<testsuite>)。

这同样适用于允许在 XML 中引用额外附件文件的 JUnit 格式扩展。

现在,如果这是一个构建管道,我不会在意,只需使用该PublishBuildArtifacts任务添加一些 .TXT 附件(每个场景/套件一个)并完成。但是,此任务不能在发布管道中使用。


我确实需要每个套件的扩展摘要/统计信息,并且我不能将它们放在 XML 中的某个位置,可以在采取几个可能晦涩的步骤后下载它们。这会自动排除将它们上传到其他地方的可能性——如果 CI/CD 在 Azure DevOps 中,那么关于它的所有内容都应该保留在那里。

我可以完全控制测试结果 XML 的生成。

4

0 回答 0