A suite of tests for applications using AOT on the JVM and in GraalVM native images. There are two types of tests: unit tests and application tests.
Unit tests are processed ahead of time and are then either run on the JVM or as a native executable.
Unit tests can be run on the JVM using the test task and as a native executable using the nativeTest task.
Application tests are always executed on the JVM against an application that’s running on the JVM or as a native executable.
The appTest task tests the application running on the JVM.The nativeAppTest task tests the application running as a native executable.
Please read and follow the contributing guide.
./gradlew :<name of the group>:<name of the smoke test>:buildfor example
./gradlew :boot:actuator-webmvc:build./gradlew :<name of the group>:<name of the smoke test>:<test task name>Valid test task names are:
-
appTest– tests the application running on the JVM -
nativeAppTest– tests the application running as a native executable -
test– executes the AOT-processed unit tests on the JVM -
nativeTest– executes the AOT-processed unit tests in a native executable
for example
./gradlew :boot:actuator-webmvc:appTest-
Create a new directory for your smoke test in the appropriate group
-
Include the directory in
settings.gradle(new groups only) -
Consult the README in the
cibranch to update the CI infrastructure
./gradlew :<name of the group>:<name of the smoke test>:build --include-build /path/to/your/projectGradle will then substitute the dependency with your provided version.
Hint: You can use --include-build multiple times.
First, install the snapshots into your local Maven cache.
You can now consume those snapshots using -PfromMavenLocal which takes a comma-separated list of group IDs:
./gradlew :rest-template:build -PfromMavenLocal=org.springframework,org.springframework.dataThe preceding example will run the rest-template smoke test, resolving Spring Framework and Spring Data modules from your local Maven cache.
By default, the smoke tests will use snapshots of org.springframework.* dependencies.
Note that org.springframework.boot and org.springframework.cloud dependencies are not affected.
Their versions are controlled by the springBootVersion and springCloudVersion properties defined in gradle.properties.
For each eligible dependency, the snapshot version that is used is derived from the dependency’s default version:
-
x.y.z-SNAPSHOTis left as-is -
x.y.zis changed tox.y.z+1-SNAPSHOT -
x.y.z-Mnis changed tox.y.z-SNAPSHOT -
x.y.z-RCnis changed tox.y.z-SNAPSHOT
To disable this behavior, set the forceSnapshots property to false, as shown in the following example:
./gradlew :boot:actuator-webmvc:build -PforceSnapshots=falseAs the test doesn’t use the Spring Dependency Management Plugin, you can’t use the ext['…'] = '…' method.
Instead, use Gradle dependency constraints.
Say, for example, you want to update the version of Spring Session JDBC to 3.0.0-SNAPSHOT:
dependencies {
// ...
constraints {
implementation('org.springframework.session:spring-session-jdbc:3.0.0-SNAPSHOT')
}
}This works for direct and transitive dependencies.