Annotation Type EnabledInNativeImage
-
@Target({TYPE,METHOD}) @Retention(RUNTIME) @Documented @EnabledIfSystemProperty(named="org.graalvm.nativeimage.imagecode", matches=".+", disabledReason="Not currently executing within a GraalVM native image") @API(status=STABLE, since="5.9.1") public @interface EnabledInNativeImage@EnabledInNativeImageis used to signal that the annotated test class or test method is only enabled when executing within a GraalVM native image.When applied at the class level, all test methods within that class will be enabled within a native image.
This annotation is not
@Inherited. Consequently, if you wish to apply the same semantics to a subclass, this annotation must be redeclared on the subclass.If a test method is disabled via this annotation, that prevents execution of the test method and method-level lifecycle callbacks such as
@BeforeEachmethods,@AfterEachmethods, and corresponding extension APIs. However, that does not prevent the test class from being instantiated, and it does not prevent the execution of class-level lifecycle callbacks such as@BeforeAllmethods,@AfterAllmethods, and corresponding extension APIs.This annotation may be used as a meta-annotation in order to create a custom composed annotation that inherits the semantics of this annotation.
Technical Details
JUnit detects whether tests are executing within a GraalVM native image by checking for the presence of the
org.graalvm.nativeimage.imagecodesystem property (see org.graalvm.nativeimage.ImageInfo for details). The GraalVM compiler sets the property tobuildtimewhile compiling a native image; the property is set toruntimewhile a native image is executing; and the Gradle and Maven plug-ins in the GraalVM Native Build Tools project set the property toagentwhile executing tests with the GraalVM tracing agent.