mirror of
https://github.com/spring-projects/spring-boot.git
synced 2026-10-07 17:59:02 +00:00
Revisit condition to skip AOT processing of tests
This commit stop skipping AOT processing of tests when tests execution is skipped. With this commit, only the presence of maven.test.skip makes the processing to skip. This harmonize the behavior with other standard plugins that do react to the property. For instance, the compiler plugin will not compile the tests if that property is set, but would do so if skipTests was provided. Closes gh-48661
This commit is contained in:
+2
@@ -92,6 +92,8 @@ include::partial$goals/process-aot.adoc[leveloffset=+1]
|
||||
The AOT engine can be applied to JUnit 5 tests that use Spring's Test Context Framework.
|
||||
Those tests are processed by the AOT engine and are then executed in a native image.
|
||||
|
||||
NOTE: Tests are not processed when the regular tests are skipped using the `maven.test.skip` property.
|
||||
|
||||
Just like <<aot.processing-applications.using-the-native-profile,for production code>>, the `spring-boot-starter-parent` defines a `nativeTest` profile that can be used to streamline the steps required to execute your tests in a native image.
|
||||
|
||||
The `nativeTest` profile configures the following:
|
||||
|
||||
+10
@@ -198,6 +198,16 @@ class AotTests {
|
||||
});
|
||||
}
|
||||
|
||||
@TestTemplate
|
||||
void whenTestAotRunsWithTestSkipItIsAlsoSkipped(MavenBuild mavenBuild) {
|
||||
mavenBuild.project("aot-test-skip").goals("test").execute((project) -> {
|
||||
Path aotDirectory = project.toPath().resolve("target/spring-aot/test");
|
||||
assertThat(aotDirectory).doesNotExist();
|
||||
Path testClassesDirectory = project.toPath().resolve("target/test-classes");
|
||||
assertThat(testClassesDirectory.resolve("META-INF").resolve("native-image")).doesNotExist();
|
||||
});
|
||||
}
|
||||
|
||||
List<Path> collectRelativePaths(Path sourceDirectory) {
|
||||
try (Stream<Path> pathStream = Files.walk(sourceDirectory)) {
|
||||
return pathStream.filter(Files::isRegularFile)
|
||||
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.springframework.boot.maven.it</groupId>
|
||||
<artifactId>aot-test-skip</artifactId>
|
||||
<version>0.0.1.BUILD-SNAPSHOT</version>
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.source>@java.version@</maven.compiler.source>
|
||||
<maven.compiler.target>@java.version@</maven.compiler.target>
|
||||
<maven.test.skip>true</maven.test.skip>
|
||||
</properties>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>@project.groupId@</groupId>
|
||||
<artifactId>@project.artifactId@</artifactId>
|
||||
<version>@project.version@</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>process-test-aot</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot</artifactId>
|
||||
<version>@project.version@</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jakarta.servlet</groupId>
|
||||
<artifactId>jakarta.servlet-api</artifactId>
|
||||
<version>@jakarta-servlet.version@</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-test</artifactId>
|
||||
<version>@spring-framework.version@</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-test</artifactId>
|
||||
<version>@project.version@</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.assertj</groupId>
|
||||
<artifactId>assertj-core</artifactId>
|
||||
<version>@assertj.version@</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter</artifactId>
|
||||
<version>@junit-jupiter.version@</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright 2012-present the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.test;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
public class SampleApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(SampleApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright 2012-present the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.fail;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
|
||||
|
||||
@SpringJUnitConfig
|
||||
class SampleApplicationTests {
|
||||
|
||||
@Autowired
|
||||
private MyBean myBean;
|
||||
|
||||
@Test
|
||||
void contextLoads() {
|
||||
assertThat(this.myBean).isNotNull();
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class MyConfig {
|
||||
|
||||
@Bean
|
||||
MyBean myBean() {
|
||||
return new MyBean();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static class MyBean {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -118,7 +118,7 @@ public class ProcessTestAotMojo extends AbstractAotMojo {
|
||||
getLog().debug("process-test-aot goal could not be applied to pom project.");
|
||||
return;
|
||||
}
|
||||
if (Boolean.getBoolean("skipTests") || Boolean.getBoolean("maven.test.skip")) {
|
||||
if (Boolean.getBoolean("maven.test.skip")) {
|
||||
getLog().info("Skipping AOT test processing since tests are skipped");
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user