#junit #xml #serialization #xml-data #xunit #flaky-tests

quick-junit

JUnit/XUnit XML的数据模型和序列化器

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编码

Download history 12466/week @ 2024-05-03 13126/week @ 2024-05-10 13243/week @ 2024-05-17 11300/week @ 2024-05-24 17405/week @ 2024-05-31 15092/week @ 2024-06-07 14283/week @ 2024-06-14 19805/week @ 2024-06-21 12578/week @ 2024-06-28 13342/week @ 2024-07-05 13526/week @ 2024-07-12 13486/week @ 2024-07-19 13560/week @ 2024-07-26 12873/week @ 2024-08-02 13129/week @ 2024-08-09 14449/week @ 2024-08-16

56,910 每月下载量
17 个crate中使用 (直接使用4个)

Apache-2.0 OR MIT

48KB
869

quick-junit

quick-junit on crates.io Documentation (latest release) Documentation (main) Changelog License License

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 测试
  • ✅ 包括标准输出和错误
  • ✅ 自动跟踪成功、失败和错误计数
  • ✅ 可选属性和额外属性

此 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