@ -23,6 +23,7 @@ import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
@@ -23,6 +23,7 @@ import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.boot.test.context.SpringBootTestContextBootstrapper ;
import org.springframework.test.context.BootstrapContext ;
import org.springframework.test.context.CacheAwareContextLoaderDelegate ;
import org.springframework.test.context.MergedContextConfiguration ;
import org.springframework.test.context.TestContext ;
import org.springframework.test.context.web.WebAppConfiguration ;
import org.springframework.test.util.ReflectionTestUtils ;
@ -56,39 +57,47 @@ class SpringBootTestContextBootstrapperTests {
@@ -56,39 +57,47 @@ class SpringBootTestContextBootstrapperTests {
@Test
void mergedContextConfigurationWhenArgsDifferentShouldNotBeConsideredEqual ( ) {
TestContext context = buildTestContext ( SpringBootTestArgsConfiguration . class ) ;
Object contextConfiguration = ReflectionTestUtils . getField ( context , "mergedContextConfiguration" ) ;
MergedContextConfiguration contextConfiguration = getMergedContextConfiguration ( context ) ;
TestContext otherContext2 = buildTestContext ( SpringBootTestOtherArgsConfiguration . class ) ;
Object otherContextConfiguration = ReflectionTestUtils . getField ( otherContext2 , "mergedContextConfiguration" ) ;
MergedContextConfiguration otherContextConfiguration = getMergedContextConfiguration ( otherContext2 ) ;
assertThat ( contextConfiguration ) . isNotEqualTo ( otherContextConfiguration ) ;
}
@Test
void mergedContextConfigurationWhenArgsSameShouldBeConsideredEqual ( ) {
TestContext context = buildTestContext ( SpringBootTestArgsConfiguration . class ) ;
Object contextConfiguration = ReflectionTestUtils . getField ( context , "mergedContextConfiguration" ) ;
MergedContextConfiguration contextConfiguration = getMergedContextConfiguration ( context ) ;
TestContext otherContext2 = buildTestContext ( SpringBootTestSameArgsConfiguration . class ) ;
Object otherContextConfiguration = ReflectionTestUtils . getField ( otherContext2 , "mergedContextConfiguration" ) ;
MergedContextConfiguration otherContextConfiguration = getMergedContextConfiguration ( otherContext2 ) ;
assertThat ( contextConfiguration ) . isEqualTo ( otherContextConfiguration ) ;
}
@Test
void mergedContextConfigurationWhenWebEnvironmentsDifferentShouldNotBeConsideredEqual ( ) {
TestContext context = buildTestContext ( SpringBootTestMockWebEnvironmentConfiguration . class ) ;
Object contextConfiguration = ReflectionTestUtils . getField ( context , "mergedContextConfiguration" ) ;
MergedContextConfiguration contextConfiguration = getMergedContextConfiguration ( context ) ;
TestContext otherContext = buildTestContext ( SpringBootTestDefinedPortWebEnvironmentConfiguration . class ) ;
Object otherContextConfiguration = ReflectionTestUtils . getField ( otherContext , "mergedContextConfiguration" ) ;
MergedContextConfiguration otherContextConfiguration = getMergedContextConfiguration ( otherContext ) ;
assertThat ( contextConfiguration ) . isNotEqualTo ( otherContextConfiguration ) ;
}
@Test
void mergedContextConfigurationWhenWebEnvironmentsSameShouldt BeConsideredEqual ( ) {
void mergedContextConfigurationWhenWebEnvironmentsSameShouldBeConsideredEqual ( ) {
TestContext context = buildTestContext ( SpringBootTestMockWebEnvironmentConfiguration . class ) ;
Object contextConfiguration = ReflectionTestUtils . getField ( context , "mergedContextConfiguration" ) ;
MergedContextConfiguration contextConfiguration = getMergedContextConfiguration ( context ) ;
TestContext otherContext = buildTestContext ( SpringBootTestAnotherMockWebEnvironmentConfiguration . class ) ;
Object otherContextConfiguration = ReflectionTestUtils . getField ( otherContext , "mergedContextConfiguration" ) ;
MergedContextConfiguration otherContextConfiguration = getMergedContextConfiguration ( otherContext ) ;
assertThat ( contextConfiguration ) . isEqualTo ( otherContextConfiguration ) ;
}
@Test
void mergedContextConfigurationClassesShouldNotContainDuplicates ( ) {
TestContext context = buildTestContext ( SpringBootTestClassesConfiguration . class ) ;
MergedContextConfiguration contextConfiguration = getMergedContextConfiguration ( context ) ;
Class < ? > [ ] classes = contextConfiguration . getClasses ( ) ;
assertThat ( classes ) . containsExactly ( SpringBootTestContextBootstrapperExampleConfig . class ) ;
}
@SuppressWarnings ( "rawtypes" )
private TestContext buildTestContext ( Class < ? > testClass ) {
SpringBootTestContextBootstrapper bootstrapper = new SpringBootTestContextBootstrapper ( ) ;
@ -100,6 +109,10 @@ class SpringBootTestContextBootstrapperTests {
@@ -100,6 +109,10 @@ class SpringBootTestContextBootstrapperTests {
return bootstrapper . buildTestContext ( ) ;
}
private MergedContextConfiguration getMergedContextConfiguration ( TestContext context ) {
return ( MergedContextConfiguration ) ReflectionTestUtils . getField ( context , "mergedContextConfiguration" ) ;
}
@SpringBootTest ( webEnvironment = WebEnvironment . RANDOM_PORT )
@WebAppConfiguration
static class SpringBootTestNonMockWebEnvironmentAndWebAppConfiguration {
@ -142,4 +155,9 @@ class SpringBootTestContextBootstrapperTests {
@@ -142,4 +155,9 @@ class SpringBootTestContextBootstrapperTests {
}
@SpringBootTest ( classes = SpringBootTestContextBootstrapperExampleConfig . class )
static class SpringBootTestClassesConfiguration {
}
}