16次发布
0.4.0 | 2024年4月19日 |
---|---|
0.3.5 | 2023年10月27日 |
0.3.3 | 2023年7月7日 |
0.3.2 | 2022年11月23日 |
0.1.5 | 2022年2月13日 |
#149 在 编码
56,910 每月下载量
在 17 个crate中使用 (直接使用4个)
48KB
869 行
quick-junit
quick-junit
是一个为 Rust 定制的 JUnit/XUnit XML 数据模型和序列化器。这个crate允许用户将 JUnit 报告作为一个 XML 文件创建。JUnit XML 文件被测试工具广泛支持。
此 crate 是为满足 cargo-nextest 的需求而构建的。
概述
JUnit 报告的根元素是 Report
。一个 Report
包含一个或多个 TestSuite
实例。一个 TestSuite
实例包含一个或多个 TestCase
。
TestCase
的状态(成功、失败、错误或跳过)由 TestCaseStatus
表示。
功能
- ✅ 将 JUnit/XUnit 序列化为 Jenkins 格式。
- ✅ 使用
TestRerun
包括测试重试 - ✅ 包括 flaky 测试
- ✅ 包括标准输出和错误
- ✅ 从输出中过滤掉 无效的 XML 字符(例如 ANSI 转义码)
- ✅ 自动跟踪成功、失败和错误计数
- ✅ 可选属性和额外属性
此 crate 目前不支持反序列化 JUnit XML。 (欢迎提交 PR!)
示例
use quick_junit::*;
let mut report = Report::new("my-test-run");
let mut test_suite = TestSuite::new("my-test-suite");
let success_case = TestCase::new("success-case", TestCaseStatus::success());
let failure_case = TestCase::new("failure-case", TestCaseStatus::non_success(NonSuccessKind::Failure));
test_suite.add_test_cases([success_case, failure_case]);
report.add_test_suite(test_suite);
const EXPECTED_XML: &str = r#"<?xml version="1.0" encoding="UTF-8"?>
<testsuites name="my-test-run" tests="2" failures="1" errors="0">
<testsuite name="my-test-suite" tests="2" disabled="0" errors="0" failures="1">
<testcase name="success-case">
</testcase>
<testcase name="failure-case">
<failure/>
</testcase>
</testsuite>
</testsuites>
"#;
assert_eq!(report.to_string().unwrap(), EXPECTED_XML);
有关包括重试和 flaky 测试的更完整示例,请参阅 fixture_tests.rs
。
最低支持的 Rust 版本 (MSRV)
最低支持的 Rust 版本是 Rust 1.70。在任何时候,都将支持至少过去 6 个月的 Rust 版本。
虽然此 crate 是预发布版(0.x.x),但它可能在修补程序版本中增加 MSRV。一旦 crate 达到 1.x,任何 MSRV 的增加都将伴随着一个新的小版本。
替代方案
- junit-report:较老、更成熟的项目。据 0.8.3 版本显示,似乎不支持 flaky 测试或可选属性。
贡献
有关如何帮助的说明,请参阅 CONTRIBUTING 文件。
许可证
本项目遵循Apache 2.0许可或MIT许可条款。
依赖项
约4.5MB
~77K SLoC