Skip to content

MahatmaFatalError/testing-in-the-modular-world

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

testing-in-the-modular-world

blog

2018-09-11-testing-in-the-modular-world

The simplified layout of this project looks like:

src
├── main
│   └── java
│       ├── foo
│       │   ├── PackageFoo.java
│       │   └── PublicFoo.java
│       └── module-info.java <------------------ module foo { exports foo; }
├── test
│   └── java                                .--- open module foo {
│       ├── foo                            /       exports foo;
│       │   └── PackageFooTests.java      /        requires org.junit.jupiter.api;
│       └── module-info.[java|test] <----<       }
└── it                                    \
    └── bar                                °---- --add-reads
        └── src                                    foo=org.junit.jupiter.api
            └── test                             --add-opens
                └── java                           foo/foo=org.junit.platform.commons
                    ├── bar
                    │   └── PublicFooTests.java
                    └── module-info.java <------ open module bar {
                                                   requires foo;
                                                   requires org.junit.jupiter.api;
                                                 }

slide deck

"Testing In The Modular World" (Living In The Material World) Testing Modules With JUnit 5 - Initial Approaches

abstract

The Java Platform Module System (JPMS) introduced with Java 9 poses new challenges when it comes to organizing and executing automated software tests. Finding tests and executing them via the Reflection API is still possible but needs some extra configuration. JUnit 5 supports scanning for tests in modules since 5.1 and has a sample project that demonstrates three possible approaches. Sources are available at: https://github.com/junit-team/junit5-samples/tree/master/junit5-modular-world

I'll start the talk with a basic introduction to JUnit 5 and the Java module system. The remainder of the talk will be spent on presenting the three approaches for executing tests when using the JPMS from the command line:

  • Resorting to the --class-path
  • Patching test binaries into main modules at runtime
  • Patching main sources into test modules at compile time

Future work and outlook:

  • Variations or other approaches?
  • How do build tools support you?
  • What are best practices in IDEs?

Happy modular testing!

About

Testing Java Modules With JUnit 5 Blueprint

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 93.8%
  • CSS 6.2%