Steps to reproduce
@EnabledInNativeImage is only valid when marked on the function body and has no effect when marked on the class. This means that the following snippet has no problem.
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledInNativeImage;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class FunctionLevelTest {
@Test
@EnabledInNativeImage
void testOnFunction() {
assertEquals(1 + 2, 3);
}
}
- But in the following snippet,
@EnabledInNativeImage is invalid.
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledInNativeImage;
import static org.junit.jupiter.api.Assertions.assertEquals;
@EnabledInNativeImage
public class ClassLevelTest {
@Test
void testOnClass(){
assertEquals(1 + 2, 3);
}
}
sdk install java 21.0.2-graalce
sdk use java 21.0.2-graalce
git clone git@github.com:linghengqian/junit5-native-image-annotation-test.git
cd ./junit5-native-image-annotation-test/
./mvnw -T1C -e clean test
./mvnw -PnativeTestInJunit -T1C -e clean test
- In the final Log, we can see that
com.lingh.ClassLevelTest.testOnClass() is not executed in nativeTest.
Finished generating 'native-tests' in 25.1s.
[INFO] Executing: /home/linghengqian/IdeaProjects/junit5-native-image-annotation-test/target/native-tests --xml-output-dir /home/linghengqian/IdeaProjects/junit5-native-image-annotation-test/target/native-test-reports -Djunit.platform.listeners.uid.tracking.output.dir=/home/linghengqian/IdeaProjects/junit5-native-image-annotation-test/target/test-ids
JUnit Platform on Native Image - report
----------------------------------------
com.lingh.FunctionLevelTest > testOnFunction() SUCCESSFUL
Test run finished after 1 ms
[ 2 containers found ]
[ 0 containers skipped ]
[ 2 containers started ]
[ 0 containers aborted ]
[ 2 containers successful ]
[ 0 containers failed ]
[ 1 tests found ]
[ 0 tests skipped ]
[ 1 tests started ]
[ 0 tests aborted ]
[ 1 tests successful ]
[ 0 tests failed ]
Context
- Used versions (Jupiter/Vintage/Platform):
Jupiter
- Build Tool/IDE:
Maven Wrapper 3.9.5/IntelliJ IDEA 2023.3.6 (Ultimate Edition)
Deliverables