New bld Extension: JUnit Reporter

<1 min read

bld
Pure java build tool for developers who don't like dealing with build tools

I've released a new extension for bld, JUnit Reporter, which summarizes JUnit failures:

> ./bld compile test
> ./bld reporter
--------------------------------------------------
JUnit Failures Summary
--------------------------------------------------

[1] com.example.ExampleTests (3 failures, 0.011s)
  - [1.1] verifyFail(String)[1] ([1] foo)
  - [1.2] verifyFail(String)[2] ([2] bar)
  - [1.3] verifyHelloFoo()
[2] com.example.MoreTests (2 failures, 0.001s)
  - [2.1] verifyMore(String)[3] ([3] qux)
  - [2.2] verifyMore(String)[4] ([4] quux)

To display details about the failures:

> ./bld reporter --index=1
--------------------------------------------------
[1] com.example.ExampleTests
--------------------------------------------------

[1.1] Test: verifyFail(String)[1]
    - Name: [1] foo
    - Type: org.opentest4j.AssertionFailedError
    - Message:
        expected: <foo> but was: <Hello World!>
    - Time: 0.009s

[1.2] Test: verifyFail(String)[2]
    - Name: [2] bar
    - Type: org.opentest4j.AssertionFailedError
    - Message:
        expected: <bar> but was: <Hello World!>
    - Time: 0.001s

And to display the details of a specific failure:

> ./bld report --i=1.2
--------------------------------------------------
[1] com.example.ExampleTests
--------------------------------------------------

[1.2] Test: verifyFail(String)[2]
    - Name: [2] bar
    - Type: org.opentest4j.AssertionFailedError
    - Message:
        expected: <bar> but was: <Hello World!>
    - Time: 0.001s
    - Trace:
        org.opentest4j.AssertionFailedError: expected: <bar> but was: <Hello World!>
                at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
                at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
                at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
                at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
                at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
                at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145)
                ...

It's quite opinionated, but pretty useful, especially within a continuous integration (CI) workflow.