17 个版本
0.1.18 | 2024年7月9日 |
---|---|
0.1.17 | 2022年9月22日 |
0.1.15 | 2022年4月3日 |
0.1.14 | 2022年1月16日 |
0.1.8 | 2021年9月25日 |
#191 在 开发工具
731 每月下载量
59KB
1.5K SLoC
junitify
junitify 从标准输入读取 JSON 测试,并将 JUnit XML 结果写入标准输出,或写入通过 --out
指定的目录。
这可以用于与使用 JUnit XML 格式显示测试结果的 CI/CD 平台集成,例如 Gitlab。
安装
cargo install junitify
示例
cargo test -- --format=json -Z unstable-options --report-time | junitify --out tests/
Valgrind (自 0.1.13
版起)
自 0.1.13
版起,可以将 Valgrind XML 报告转换为 JUnit 报告,例如
fish.shell
valgrind --tool=memcheck --xml=yes --xml-file=report.xml (cargo +nightly test -q --message-format=json --no-run | jq -r '.executable | select(. != null)')
junitify -k valgrind --out tests/ -f report.xml
非零退出码(自 0.1.14
版起)
自 0.1.14
版起,现在可以使用 -z
使 junitify 在测试失败时以非零代码退出,也可以使用 -r
将所有测试报告到标准输出。
JUnit XML(自 0.1.14
版起)
自 0.1.14
版起,junitify 能够读取自身生成的 JUnit XML,配合 -z
和 -r
,当有失败的测试时,它将打印测试结果并以非零代码退出。
JUnit XML 解析器与其他解析器的工作方式相同,它读取 JUnit XML 并输出 JUnit XML,它可能会更改其内容、结构和结构,并删除大量值(在 XML 不是由 junitify 生成的 XML 的情况下)。
新的 XML 生成器(自 0.1.14
版起)
我们不再使用Handlebars,现在使用 quick-xml 生成XML,这有助于在不应用奇怪的缩进的情况下保留测试的原始输出,同时它提供了一个更易于维护的基于serde的代码。
我们将在未来移除handlebars依赖(从 0.1.15
版本开始移除)。
忽略解析错误(自 0.1.15
)
有时,测试会打印消息到Stdout和Stderr,并且它们会被管道传输到Cargo输出,与测试套件输出混合,这会导致在解析输出时 junitify 失败。为了克服这个问题,你可以使用 -i
或 --ignore-parse-errors
来忽略解析错误。
请注意,如果Cargo输出的JSON格式发生变化(由于 --format=json
是不稳定的),junitify 将会忽略它们而不是崩溃,因此只有在你测试的输出与 cargo test
输出混淆时才使用它。
带有 -
的示例
cargo test -- --format=json -Z unstable-options --report-time | junitify -i --out tests/
在此处阅读完整的变更日志 Junitify 0.1.15 Changelog
CI/CD Docker镜像(已弃用)
Docker镜像已弃用,Rust现在提供了一个nightly镜像,因此junitify不再构建自己的镜像(这已经被我忽视,并且很长时间以来都没有用)。
CI/CD 示例
过时
你可以在 bindet .gitlab-ci.yml 中找到CI/CD的示例,并查看它们在 管道报告中 的样子。
现在应该如何操作
你可以查看 tomq CI/CD 示例,以获取更最新的示例。你可能还想要指定一个特定的版本
cargo +nightly install [email protected]
如果你不希望每次都构建junitify,请查看 GitLab上的junitify包,在那里你可以找到junitify的最新二进制版本(目前只适用于Linux x86,arm64即将推出,因为GitLab添加了arm64机器)。
只需确保在CI/CD管道中验证校验和,以确保安全。
依赖项
~9–20MB
~237K SLoC