Junit5: Unable to extend an abstract class for my test classes

Created on 16 Mar 2016  路  7Comments  路  Source: junit-team/junit5

Issue: Unable to extend my test classes from an abstract class.
Workaround: remove abstract from the class. (extending a regular class works just ok)

Noticed on: 16.03.2016
jUnit versions: 5.0.0-ALPHA & 5.0.0-SNAPSHOT

Context: I usually extend my test classes from an abstract class where I have methods reading mock files and context initialisers, example: https://github.com/mkbrv/orange.api/blob/master/integration-tests/src/test/java/com/mkbrv/orange/integration/AbstractIntegrationTest.java

Error on ALPHA:
ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project integration-tests: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test failed: There was an error in the forked process
[ERROR] org.junit.gen5.commons.util.PreconditionViolationException: Cannot resolve class name 'com.mkbrv.orange.integration.AbstractIntegrationTest' because it's not a test container
[ERROR] at org.junit.gen5.engine.junit5.discovery.JUnit5TestableFactory.throwCannotResolveClassException(JUnit5TestableFactory.java:176)
[ERROR] at org.junit.gen5.engine.junit5.discovery.JUnit5TestableFactory.fromClass(JUnit5TestableFactory.java:55)
[ERROR] at org.junit.gen5.engine.junit5.discovery.JUnit5Testable.fromClass(JUnit5Testable.java:24)
[ERROR] at org.junit.gen5.engine.junit5.discovery.DiscoverySelectorResolver.resolveTestClass(DiscoverySelectorResolver.java:74)
[ERROR] at org.junit.gen5.engine.junit5.discovery.DiscoverySelectorResolver.lambda$resolveSelectors$30(DiscoverySelectorResolver.java:63)
[ERROR] at java.util.ArrayList.forEach(ArrayList.java:1249)
[ERROR] at org.junit.gen5.engine.junit5.discovery.DiscoverySelectorResolver.resolveSelectors(DiscoverySelectorResolver.java:62)
[ERROR] at org.junit.gen5.engine.junit5.JUnit5TestEngine.resolveDiscoveryRequest(JUnit5TestEngine.java:47)
[ERROR] at org.junit.gen5.engine.junit5.JUnit5TestEngine.discover(JUnit5TestEngine.java:40)
[ERROR] at org.junit.gen5.launcher.main.DefaultLauncher.discoverRoot(DefaultLauncher.java:84)
[ERROR] at org.junit.gen5.launcher.main.DefaultLauncher.discover(DefaultLauncher.java:54)
[ERROR] at org.junit.gen5.surefire.TestPlanScannerFilter.accept(TestPlanScannerFilter.java:34)
[ERROR] at org.apache.maven.surefire.util.DefaultScanResult.applyFilter(DefaultScanResult.java:98)
[ERROR] at org.junit.gen5.surefire.JUnitGen5Provider.scanClasspath(JUnitGen5Provider.java:61)
[ERROR] at org.junit.gen5.surefire.JUnitGen5Provider.invoke(JUnitGen5Provider.java:56)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

On Snapshot version, I get a NPE in the same area:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project integration-tests: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test failed: There was an error in the forked process
[ERROR] java.lang.NullPointerException
[ERROR] at org.junit.gen5.engine.junit5.discovery.JUnit5TestableFactory.lambda$fromClass$40(JUnit5TestableFactory.java:64)
[ERROR] at java.util.logging.Logger.log(Logger.java:808)
[ERROR] at java.util.logging.Logger.warning(Logger.java:1580)
[ERROR] at org.junit.gen5.engine.junit5.discovery.JUnit5TestableFactory.fromClass(JUnit5TestableFactory.java:63)
[ERROR] at org.junit.gen5.engine.junit5.discovery.JUnit5Testable.fromClass(JUnit5Testable.java:38)
[ERROR] at org.junit.gen5.engine.junit5.discovery.DiscoverySelectorResolver.resolveTestClass(DiscoverySelectorResolver.java:72)
[ERROR] at org.junit.gen5.engine.junit5.discovery.DiscoverySelectorResolver.lambda$resolveSelectors$49(DiscoverySelectorResolver.java:61)
[ERROR] at java.util.ArrayList.forEach(ArrayList.java:1249)
[ERROR] at org.junit.gen5.engine.junit5.discovery.DiscoverySelectorResolver.resolveSelectors(DiscoverySelectorResolver.java:60)
[ERROR] at org.junit.gen5.engine.junit5.JUnit5TestEngine.resolveDiscoveryRequest(JUnit5TestEngine.java:47)
[ERROR] at org.junit.gen5.engine.junit5.JUnit5TestEngine.discover(JUnit5TestEngine.java:40)
[ERROR] at org.junit.gen5.launcher.main.DefaultLauncher.discoverRoot(DefaultLauncher.java:88)
[ERROR] at org.junit.gen5.launcher.main.DefaultLauncher.discover(DefaultLauncher.java:65)
[ERROR] at org.junit.gen5.surefire.TestPlanScannerFilter.accept(TestPlanScannerFilter.java:34)
[ERROR] at org.apache.maven.surefire.util.DefaultScanResult.applyFilter(DefaultScanResult.java:98)
[ERROR] at org.junit.gen5.surefire.JUnitGen5Provider.scanClasspath(JUnitGen5Provider.java:61)
[ERROR] at org.junit.gen5.surefire.JUnitGen5Provider.invoke(JUnitGen5Provider.java:56)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
[ERROR] -> [Help 1]
[ERROR]

bug

All 7 comments

It's a bug in our surefire-plugin.

A temporary fix would be to rename your abstract test class so that it does not end with Test or Tests anymore. That way it will not be automatically picked up by maven.

I think it's a bug in the JUnit 5 Engine that has already been fixed by bb79ab1bafcbb4cf728004828183b0626dbbd4e8.

@mkbrv Can you check whether you can reproduce it using the latest 5.0.0-SNAPSHOT artefacts?

@marcphilipp No, it's a bug I built in with bb79ab1bafcbb4cf728004828183b0626dbbd4e8. :(

Just fixed it. Should be online after maven repo deploys.

I am (waiting 15 minutes and then) checking again. I have used for the first time this morning junit5 ( 5.0.0-SNAPSHOT ), and the difference from the alpha was a NPE

@mkbrv Wait 15 minutes or so until the artifacts have been redeployed.

Fixed in master.

I confirm it's all working.
Thanks for your quick response, have a nice day :)

Was this page helpful?
0 / 5 - 0 ratings