17 releases

0.8.3 Oct 23, 2023
0.8.2 Dec 16, 2022
0.8.1 Sep 10, 2022
0.7.1 Apr 27, 2022
0.1.2 Nov 22, 2018

#122 in Testing

Download history 34355/week @ 2024-11-01 28006/week @ 2024-11-08 36943/week @ 2024-11-15 27618/week @ 2024-11-22 31715/week @ 2024-11-29 29348/week @ 2024-12-06 28849/week @ 2024-12-13 10917/week @ 2024-12-20 9545/week @ 2024-12-27 29332/week @ 2025-01-03 39720/week @ 2025-01-10 38840/week @ 2025-01-17 40698/week @ 2025-01-24 41688/week @ 2025-01-31 51740/week @ 2025-02-07 19557/week @ 2025-02-14

161,283 downloads per month
Used in 15 crates (11 directly)

MIT license

38KB
746 lines

JUnit Report in Rust

Generate JUnit compatible XML reports in Rust.

Example


    use junit_report::{datetime, Duration, ReportBuilder, TestCase, TestCaseBuilder, TestSuite, TestSuiteBuilder};
    use std::fs::File;

    // Create a successful test case
    let test_success = TestCaseBuilder::success("good test", Duration::seconds(15))
        .set_classname("MyClass")
        .set_filepath("MyFilePath")
        .build();

    // Create a test case that encountered an unexpected error condition
    let test_error = TestCase::error(
        "error test",
        Duration::seconds(5),
        "git error",
        "unable to fetch",
    );

    // Create a test case that failed because of a test failure
    let test_failure = TestCase::failure(
        "failure test",
        Duration::seconds(10),
        "assert_eq",
        "not equal",
    );

    // Next we create a test suite named "ts1" with not test cases associated
    let ts1 = TestSuite::new("ts1");

    // Then we create a second test suite called "ts2" and set an explicit time stamp
    // then we add all the test cases from above
    let timestamp = datetime!(1970-01-01 00:01:01 UTC);
    let ts2 = TestSuiteBuilder::new("ts2")
        .set_timestamp(timestamp)
        .add_testcase(test_success)
        .add_testcase(test_error)
        .add_testcase(test_failure)
        .build();

    // Last we create a report and add all test suites to it
    let r = ReportBuilder::new()
        .add_testsuite(ts1)
        .add_testsuite(ts2)
        .build();

    // The report can than be written in XML format to any writer
    let mut file = File::create("my-junit.xml").unwrap();
    r.write_xml(&mut file).unwrap();

Dependencies

~4MB
~76K SLoC