Phpunit: 支持以 XML 格式报告测试结果的新标准

创建于 2018-06-07  ·  23评论  ·  资料来源: sebastianbergmann/phpunit

最有用的评论

也许我们应该为 PHPUnit 创建我们自己的日志格式。 (是的,我知道,https://xkcd.com/927/。)

在某种程度上,这已经存在,这要归功于@arneblankerts以及使用--coverage-xml生成的日志文件。 生成器需要重构(并且至少部分地从 php-code-coverage 移动到 PHPUnit 本身)以仅包含代码覆盖率数据。

或者我们等待并希望https://github.com/ota4j-team/opentest4j/issues/9#issuecomment -382630222 导致我们可以采用的东西。

所有23条评论

#2964 中引用的 JUnit5 XSD 文件不是 junit。 它是从 jenkins xunit 插件获取的测试资源。

很久以前,我们发现了类似 JUnit v10 的东西:
https://github.com/FriendsOfPHP/PHP-CS-Fixer/blob/2.12/doc/junit-10.xsd
我相信它是在 Travis repos 或类似的地方找到的

(是的,遗憾的是,到目前为止还没有官方的 xsd)


此外,在问题标题更改后,您可能会对 checkstyle 感兴趣(别担心,这不仅仅是样式,而是任何工具报告),也广泛用于不同的 CI 运行程序:
https://github.com/FriendsOfPHP/PHP-CS-Fixer/blob/2.12/doc/checkstyle.xsd

我希望这个输入是在正确的位置或适合这个线程。 我在将 PHPUnit 的测试输出与支持 JUnit 的系统一起使用时遇到了问题。 适当的 JUnit 支持将是理想的(至少在我个人实现的范围内),因为我已经将 JUnit 视为一种广泛接受的测试格式。

适当的 JUnit 支持将是理想的

问题是没有人知道适当的支持看起来如何,因为 JUnit 格式没有官方数据方案

适当的 JUnit 支持将是理想的

问题是没有人知道适当的支持看起来如何,因为 JUnit 格式没有官方数据方案

是和否。
JUnit java 库还没有为 XML 报告定义官方模式。 您可以选择遵循最受支持的模式之一( maven surefirejunit ant task )。 或者为 php 定义您自己的架构(远离 junit)(以满足您的需求)并要求支持它报告 CI 工具。

@keradus原谅我,我绝对不是这方面的专家。 我只是一个使用 PHPUnit 并希望在 Azure DevOps 中使用它的最终用户(他们不支持嵌套测试套件)。 我希望每个人都能就一个开放的测试标准达成一致,但我不知道是否有办法让它满足每个人的需求,因为可能有特定于语言的数据。

JUnit 5 确实带有 XSD:

https://github.com/junit-team/junit5/blob/master/platform-tests/src/test/resources/jenkins-junit.xsd

这似乎与我能找到的大多数第三方 XSD 相匹配。

嵌套的testsuite元素? 我很惊讶它的工作原理 - 除了 PHPUnit 之外还有什么吗?

(整个操作系统世界如何使用 JUnit XML 作为事实上的标准,这有点疯狂,而实际上似乎没有人确切知道他们同意的内容 - 我们都只是同意它......)

这似乎与我能找到的大多数第三方 XSD 相匹配。

可爱,这听起来就像是适合 testig 框架的那种描述良好的标准。 😨
重构事件和日志子系统是我最喜欢的玩具之一,我已将 JUnit 5 参考添加到我的阅读列表中。 谢谢!

JUnit 5 确实带有 XSD:

https://github.com/junit-team/junit5/blob/master/platform-tests/src/test/resources/jenkins-junit.xsd

这似乎与我能找到的大多数第三方 XSD 相匹配。

嵌套的testsuite元素? 我很惊讶它的工作原理 - 除了 PHPUnit 之外还有什么吗?

(整个操作系统世界如何使用 JUnit XML 作为事实上的标准,这有点疯狂,而实际上似乎没有人确切知道他们同意的内容 - 我们都只是同意它......)

JUnit 不附带 XSD。 该 XSD 是由 xunit 插件(阅读 XSD 的标题)复制用于测试目的(平台测试项目)。 该文件是由 jenkins xunit 插件的原作者 Gregory Boissinot 创建的,该插件对找到的所有案例进行了某种混合。

JUnit 没有 XSD

嗯,它是测试套件的一部分 - 所以,在我的光学器件中,它是规范的一部分。

无论它起源于何处,这都是 JUnit 代码库本身所遵循的规范。

或不?

我主要关心的是在分配工作量之前:标准(XSD 与否)是否稳定,至少目前是这样? 如果是这样,我很高兴在 PHPUnit 中实现它。

嗯,它是测试套件的一部分 - 所以,在我的光学器件中,它是规范的一部分。

当且仅当为此目的包含 XSD 时,我才会同意。 许多测试套件还包括针对无法回滚的场景的测试,因为开发社区采用了另一个“永远测试版”的东西。

在 PHPUnit 自己的集合中,有一些针对旧记录器行为的保护措施,坦率地说,这不是很好。

嗯,它是测试套件的一部分 - 所以,在我的光学器件中,它是规范的一部分。

无论它起源于何处,这都是 JUnit 代码库本身所遵循的规范。

或不?

要被视为特定的,应该在文档中明确说明。 由于您找到了测试资源,这并不意味着它是官方架构文档。 文件jenkins -junit.xsd 的名称应该是另一个与 JUnit 官方架构无关的信号。 您可以自由地向他们询问这是否是 JUnit 的官方模式(我记得在 JUnit4 之前,该库不会生成任何格式的 JSON 或 XML 或其他格式的报告)

是的,我不反对,它显然不是官方模式,但是……没有。

这似乎是在他们的源代码库或任何地方找到的最接近的东西。

但是……没有。

关键是 JUnit 它只是一个运行测试的库。 它不产生报告所以没有理由定义任何标准。 谁使用 JUnit 引擎并生成报告而不是它可以定义标准(也可以是其他格式,如 JSON)。 目前有两个历史上广泛使用的执行器:Maven 和 Ant。 它们都为 XML 报告定义了自己的架构,并且彼此完全不同。 这就是这个问题的原因,定义一个 PHPUnit 标准(对 JUnit 没有任何限制)来满足 PHP 的需求。 但直到现在我都没有看到任何动静。

也许我们应该为 PHPUnit 创建我们自己的日志格式。 (是的,我知道,https://xkcd.com/927/。)

在某种程度上,这已经存在,这要归功于@arneblankerts以及使用--coverage-xml生成的日志文件。 生成器需要重构(并且至少部分地从 php-code-coverage 移动到 PHPUnit 本身)以仅包含代码覆盖率数据。

或者我们等待并希望https://github.com/ota4j-team/opentest4j/issues/9#issuecomment -382630222 导致我们可以采用的东西。

生成器需要重构(并且至少部分地从 php-code-coverage 移动到 PHPUnit 本身)以仅包含代码覆盖率数据。

那些独立于 php-unit 使用 php-code-coverage 的用户会发生什么?

感谢您提出这一点,@mindplay-dk。 这需要考虑在内。

很久以前,我们发现了类似 JUnit v10 的东西:
https://github.com/FriendsOfPHP/PHP-CS-Fixer/blob/2.12/doc/junit-10.xsd
我相信它是在 Travis repos 或类似的地方找到的

(是的,遗憾的是,到目前为止还没有官方的 xsd)

此外,在问题标题更改后,您可能会对 checkstyle 感兴趣(别担心,这不仅仅是样式,而是任何工具报告),也广泛用于不同的 CI 运行程序:
https://github.com/FriendsOfPHP/PHP-CS-Fixer/blob/2.12/doc/checkstyle.xsd

拥有 checkstyle 支持会很棒,因为这样我们还可以通过已经与 phpstan、psalm 和 php-cs-fixer(以及能够生成 checkstyle 格式报告的所有其他工具)兼容的泛型脚本轻松获得 github 检查注释

https://github.com/staabm/annotate-pull-request-from-checkstyle/

@sebastianbergmann你会接受添加 checkstyle xml 报告的 PR 吗?

正如你从https://github.com/FriendsOfPHP/PHP-CS-Fixer/blob/2.16/src/Report/CheckstyleReporter.php#L35看到的,实现不会很复杂

不。我不认为 Checkstyle XML 非常适合测试结果。

你看到检查 api result-printer https://github.com/mheap/phpunit-github-actions-printer 了吗?

当以 checkstyle 格式生成报告时,我们可以轻松支持这种功能(使用通用 checkstyle 到 github 注释转换器,如 https://github.com/staabm/annotate-pull-request-from-checkstyle)

被#4321 取代。

此页面是否有帮助?
0 / 5 - 0 等级