Crates.io | quick-junit |
lib.rs | quick-junit |
version | 0.5.0 |
source | src |
created_at | 2022-01-29 04:31:00.944592 |
updated_at | 2024-09-01 22:38:38.532729 |
description | Data model and serializer for JUnit/XUnit XML |
homepage | |
repository | https://github.com/nextest-rs/quick-junit |
max_upload_size | |
id | 523441 |
size | 82,027 |
quick-junit
is a JUnit/XUnit XML data model and serializer for Rust. This crate allows users
to create a JUnit report as an XML file. JUnit XML files are widely supported by test tooling.
This crate is built to serve the needs of cargo-nextest.
The root element of a JUnit report is a Report
. A Report
consists of one or more
TestSuite
instances. A TestSuite
instance consists of one or more TestCase
s.
The status (success, failure, error, or skipped) of a TestCase
is represented by
TestCaseStatus
.
TestRerun
This crate does not currently support deserializing JUnit XML. (PRs are welcome!)
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);
For a more comprehensive example, including reruns and flaky tests, see
fixture_tests.rs
.
The minimum supported Rust version is Rust 1.70. At any time, Rust versions from at least the last 6 months will be supported.
While this crate is a pre-release (0.x.x) it may have its MSRV bumped in a patch release. Once a crate has reached 1.x, any MSRV bump will be accompanied with a new minor version.
See the CONTRIBUTING file for how to help out.
This project is available under the terms of either the Apache 2.0 license or the MIT license.