What’s the difference between maven modules junit-jupiter-api and junit-jupiter-engine? Is it necessary to include both dependencies in build.gradle?
Do I need to provide both dependencies?
testCompile("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")
testCompile("org.junit.jupiter:junit-jupiter-api:${junitVersion}")
Or only one dependency is enough?
testCompile("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")
And do I need to add a dependency on junit-vintage-engine?
Advertisement
Answer
JUnit Prior to Version 5.4
From the docs:
junit-jupiter-apiJUnit Jupiter API for writing tests and extensions.
junit-jupiter-engineJUnit Jupiter test engine implementation, only required at runtime.
junit-vintage-engineJUnit Vintage test engine implementation that allows to run vintage JUnit tests, i.e. tests written in the JUnit 3 or JUnit 4 style, on the new JUnit Platform.
So …
- You need both
junit-jupiter-apiandjunit-jupiter-engineto write and run JUnit5 tests - You only need
junit-vintage-engineif (a) you are running with JUnit5 and (b) your test cases use JUnit4 constructs/annotations/rules etc
JUnit from Version 5.4 Onwards
In JUnit 5.4 this is simplified, see this answer for more details.