Skip to content

Commit b711489

Browse files
committed
Merge pull request #44348 from bernie-schelberg-invicara
* pr/44348: Polish contribution Consider properties on outer class in nested @DataJpaTest tests Closes gh-44348
2 parents acfdd11 + 2a94ee1 commit b711489

File tree

2 files changed

+63
-7
lines changed

2 files changed

+63
-7
lines changed

spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/orm/jpa/DataJpaTestContextBootstrapper.java

+4-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2025 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -17,8 +17,7 @@
1717
package org.springframework.boot.test.autoconfigure.orm.jpa;
1818

1919
import org.springframework.boot.test.context.SpringBootTestContextBootstrapper;
20-
import org.springframework.core.annotation.MergedAnnotations;
21-
import org.springframework.core.annotation.MergedAnnotations.SearchStrategy;
20+
import org.springframework.test.context.TestContextAnnotationUtils;
2221
import org.springframework.test.context.TestContextBootstrapper;
2322

2423
/**
@@ -30,10 +29,8 @@ class DataJpaTestContextBootstrapper extends SpringBootTestContextBootstrapper {
3029

3130
@Override
3231
protected String[] getProperties(Class<?> testClass) {
33-
return MergedAnnotations.from(testClass, SearchStrategy.INHERITED_ANNOTATIONS)
34-
.get(DataJpaTest.class)
35-
.getValue("properties", String[].class)
36-
.orElse(null);
32+
DataJpaTest dataJpaTest = TestContextAnnotationUtils.findMergedAnnotation(testClass, DataJpaTest.class);
33+
return (dataJpaTest != null) ? dataJpaTest.properties() : null;
3734
}
3835

3936
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*
2+
* Copyright 2012-2025 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.springframework.boot.test.autoconfigure.orm.jpa;
18+
19+
import org.junit.jupiter.api.Nested;
20+
import org.junit.jupiter.api.Test;
21+
22+
import org.springframework.beans.factory.annotation.Autowired;
23+
import org.springframework.core.env.Environment;
24+
25+
import static org.assertj.core.api.Assertions.assertThat;
26+
27+
/**
28+
* Tests for the {@link DataJpaTest#properties properties} attribute of
29+
* {@link DataJpaTest @DataJpaTest}.
30+
*
31+
* @author Bernie Schelberg
32+
*/
33+
@DataJpaTest(properties = "spring.profiles.active=test")
34+
class DataJpaTestPropertiesIntegrationTests {
35+
36+
@Autowired
37+
private Environment environment;
38+
39+
@Test
40+
void environmentWithNewProfile() {
41+
assertThat(this.environment.getActiveProfiles()).containsExactly("test");
42+
}
43+
44+
@Nested
45+
class NestedTests {
46+
47+
@Autowired
48+
private Environment innerEnvironment;
49+
50+
@Test
51+
void propertiesFromEnclosingClassAffectNestedTests() {
52+
assertThat(DataJpaTestPropertiesIntegrationTests.this.environment.getActiveProfiles())
53+
.containsExactly("test");
54+
assertThat(this.innerEnvironment.getActiveProfiles()).containsExactly("test");
55+
}
56+
57+
}
58+
59+
}

0 commit comments

Comments
 (0)