我很清楚,我目前无法做的事情,所以我正在寻找解决方法。
首先,假设基于微服务的高度模块化的应用程序系统。每个微服务都在其构建管道中运行自己的单元测试,并将结果发布到Azure DevOps-目前没有问题。
但是,需要在正确部署的应用程序系统上运行一些集成(几乎端到端)测试(简称为集成测试套件)。这是在指定的环境(称为集成测试环境)上完成的。该测试套件将在几种不同的场景中执行,因此输出需要反映出来(这仅表示如果有4个场景,则测试结果输出文件将具有4个测试套件)。
除此之外,应用程序系统版本与其测试结果之间必须存在直接可见的链接。
为实现此目的,有一个发布管道,前三个阶段是:部署到DEV,部署到INT和运行集成测试。
自然,PublishTestResults
任务用于很好地概述集成测试结果。集成测试协调器应用程序正在生成一个JUnit XML /场景,并在测试结束时将其提供给管道。
这就是问题所在:有必要提供有关在每种情况/套件中运行的测试的某些统计信息(比在Z秒内成功完成X / Y测试更有趣的东西)
我知道Jenkins CI似乎遵循了Dirk Jagdmann描述的JUnit XML format,即<testsuite>
元素可以有一个<system-out>
元素,并且该元素会出现在测试套件的可视化中。
不幸的是(!),Azure DevOps PublishTestResults task仅读取单个<system-out>
元素下的<testcase>
(上面的链接显示了结果格式映射)。具有讽刺意味的是,测试套件和测试用例刀片的渲染方式几乎相同-它们都具有Debug
部分,在其中您可以用Error message
,Stack Trace
等(例如,不会折叠)被{/ {1}}读取/填充)。
JUnit格式扩展名也是如此,该扩展名允许在XML中引用额外的附件文件。
现在,如果这是一个构建管道,我会不在意,只需使用<testsuite>
任务添加一些.TXT附件(每个方案/套件一个)并完成。但是,此任务不能在发布管道中使用。
我确实需要每个套件的扩展摘要/统计信息,并且我无法在XML中的某些地方添加它们。可以在采取了一些可能晦涩的步骤后将其下载。这样会自动排除在其他地方上载它们的权限-如果CI / CD位于Azure DevOps中,则有关它的所有内容都应保留在其中。
我完全控制测试结果XML的生成。