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

#121 in Testing

Download history 22463/week @ 2024-08-08 20918/week @ 2024-08-15 33236/week @ 2024-08-22 30869/week @ 2024-08-29 36515/week @ 2024-09-05 29407/week @ 2024-09-12 26383/week @ 2024-09-19 35833/week @ 2024-09-26 28812/week @ 2024-10-03 22544/week @ 2024-10-10 28887/week @ 2024-10-17 28055/week @ 2024-10-24 33114/week @ 2024-10-31 30301/week @ 2024-11-07 35717/week @ 2024-11-14 29080/week @ 2024-11-21

134,188 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
~74K SLoC