Skip to content

JUnit5 extension for making unit tests contingent on other unit test success

License

Notifications You must be signed in to change notification settings

bnorm/junit5-contingent

Repository files navigation

junit5-contingent

Maven Central

Allows for JUnit 5 tests to be contingent on the success of other tests.

Why?

Unit tests can fail for all sorts of reasons. Sometimes a multitude of failures can hide the unit test failures which expose the actual bug. If unit tests, which implicitly depended on functionality tested by other unit tests, failed early with a clear message what implicit dependency failed, then it could be easier pinpoint the actual problem. That's the problem this library is attempting to solve.

Also, I wanted to see if it could be done using JUnit 5 extensions. Yeah, mainly this reason.

Example

In the following example, tests required1 and required2 will be executed first. If none of them fail, then tests dependent1 and dependent2 will be allowed to run.

@ContingentExtension
class ContingentTests {
    @Test @Tag("required")
    public void required1() {}

    @Test @Tag("required")
    public void required2() {}

    @Test @Contingent("required")
    public void dependent1() {}

    @Test @Contingent("required")
    public void dependent2() {}
}

What's Next?

  • API: I'm not happy with the use of Tags to mark required tests. I don't like having to match raw strings for creating this link. The whole API layer could be greatly improved.

  • Cross-Class Linking: Right now unit tests are only linked if they exist in the same class. It would be great if they could be linked for all discovered unit tests.

About

JUnit5 extension for making unit tests contingent on other unit test success

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages