Skip to content

Commit 38af1c2

Browse files
author
Dave Syer
committed
Remove @EnableAutoConfiguration from autoconfigure tests
It was doing scary things (like starting elasticsearch, hornetq etc). There's still an outstanding question about why the context was not being properly closed in such a scenario (maybe one of those embedded servers lurking on a background thread?). See gh-1034
1 parent f1b7544 commit 38af1c2

File tree

4 files changed

+68
-33
lines changed

4 files changed

+68
-33
lines changed

spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/AdhocTestSuite.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,18 @@
2020
import org.junit.runner.RunWith;
2121
import org.junit.runners.Suite;
2222
import org.junit.runners.Suite.SuiteClasses;
23-
import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfigurationTests;
24-
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfigurationTests;
23+
import org.springframework.boot.autoconfigure.integration.IntegrationAutoConfigurationTests;
24+
import org.springframework.boot.autoconfigure.jmx.JmxAutoConfigurationTests;
25+
import org.springframework.boot.autoconfigure.web.BasicErrorControllerDirectMockMvcTests;
2526

2627
/**
2728
* A test suite for probing weird ordering problems in the tests.
2829
*
2930
* @author Dave Syer
3031
*/
3132
@RunWith(Suite.class)
32-
@SuiteClasses({ HibernateJpaAutoConfigurationTests.class,
33-
LiquibaseAutoConfigurationTests.class })
33+
@SuiteClasses({ BasicErrorControllerDirectMockMvcTests.class,
34+
JmxAutoConfigurationTests.class, IntegrationAutoConfigurationTests.class })
3435
@Ignore
3536
public class AdhocTestSuite {
3637

spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/BasicErrorControllerDirectMockMvcTests.java

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,19 @@
1616

1717
package org.springframework.boot.autoconfigure.web;
1818

19+
import java.lang.annotation.Documented;
20+
import java.lang.annotation.ElementType;
21+
import java.lang.annotation.Retention;
22+
import java.lang.annotation.RetentionPolicy;
23+
import java.lang.annotation.Target;
24+
1925
import org.junit.After;
2026
import org.junit.Test;
2127
import org.springframework.boot.SpringApplication;
22-
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
23-
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
24-
import org.springframework.boot.autoconfigure.jms.hornetq.HornetQAutoConfiguration;
25-
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
26-
import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration;
28+
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
2729
import org.springframework.boot.builder.SpringApplicationBuilder;
2830
import org.springframework.context.annotation.Configuration;
31+
import org.springframework.context.annotation.Import;
2932
import org.springframework.http.MediaType;
3033
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
3134
import org.springframework.test.web.servlet.MockMvc;
@@ -85,18 +88,25 @@ public void errorPageAvailableWithMvcIncluded() throws Exception {
8588
assertTrue("Wrong content: " + content, content.contains("status=999"));
8689
}
8790

91+
@Target(ElementType.TYPE)
92+
@Retention(RetentionPolicy.RUNTIME)
93+
@Documented
94+
@Import({ EmbeddedServletContainerAutoConfiguration.class,
95+
ServerPropertiesAutoConfiguration.class,
96+
DispatcherServletAutoConfiguration.class, WebMvcAutoConfiguration.class,
97+
HttpMessageConvertersAutoConfiguration.class,
98+
ErrorMvcAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class })
99+
protected static @interface MinimalWebConfiguration {
100+
}
101+
88102
@Configuration
89-
@EnableAutoConfiguration(exclude = { SecurityAutoConfiguration.class,
90-
HibernateJpaAutoConfiguration.class, DataSourceAutoConfiguration.class,
91-
HornetQAutoConfiguration.class})
103+
@MinimalWebConfiguration
92104
protected static class ParentConfiguration {
93105

94106
}
95107

96108
@Configuration
97-
@EnableAutoConfiguration(exclude = { SecurityAutoConfiguration.class,
98-
HibernateJpaAutoConfiguration.class, DataSourceAutoConfiguration.class,
99-
HornetQAutoConfiguration.class})
109+
@MinimalWebConfiguration
100110
@EnableWebMvc
101111
protected static class WebMvcIncludedConfiguration {
102112
// For manual testing
@@ -107,21 +117,17 @@ public static void main(String[] args) {
107117
}
108118

109119
@Configuration
110-
@EnableAutoConfiguration(exclude = { SecurityAutoConfiguration.class,
111-
HibernateJpaAutoConfiguration.class, DataSourceAutoConfiguration.class,
112-
HornetQAutoConfiguration.class})
120+
@MinimalWebConfiguration
113121
protected static class VanillaConfiguration {
114-
// For manual testingm
122+
// For manual testing
115123
public static void main(String[] args) {
116124
SpringApplication.run(VanillaConfiguration.class, args);
117125
}
118126

119127
}
120128

121129
@Configuration
122-
@EnableAutoConfiguration(exclude = { SecurityAutoConfiguration.class,
123-
HibernateJpaAutoConfiguration.class, DataSourceAutoConfiguration.class,
124-
HornetQAutoConfiguration.class})
130+
@MinimalWebConfiguration
125131
protected static class ChildConfiguration {
126132
// For manual testing
127133
public static void main(String[] args) {

spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/BasicErrorControllerMockMvcTests.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@
1616

1717
package org.springframework.boot.autoconfigure.web;
1818

19+
import java.lang.annotation.Documented;
20+
import java.lang.annotation.ElementType;
21+
import java.lang.annotation.Retention;
22+
import java.lang.annotation.RetentionPolicy;
23+
import java.lang.annotation.Target;
1924
import java.util.Map;
2025

2126
import javax.servlet.DispatcherType;
@@ -28,14 +33,12 @@
2833
import org.junit.runner.RunWith;
2934
import org.springframework.beans.factory.annotation.Autowired;
3035
import org.springframework.boot.SpringApplication;
31-
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
32-
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
33-
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
34-
import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration;
36+
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
3537
import org.springframework.boot.autoconfigure.web.BasicErrorControllerMockMvcTests.TestConfiguration;
3638
import org.springframework.boot.test.SpringApplicationConfiguration;
3739
import org.springframework.context.annotation.Bean;
3840
import org.springframework.context.annotation.Configuration;
41+
import org.springframework.context.annotation.Import;
3942
import org.springframework.http.HttpStatus;
4043
import org.springframework.http.MediaType;
4144
import org.springframework.mock.web.MockHttpServletRequest;
@@ -122,9 +125,19 @@ public void testDirectAccessForBrowserClient() throws Exception {
122125
assertTrue("Wrong content: " + content, content.contains("ERROR_BEAN"));
123126
}
124127

128+
@Target(ElementType.TYPE)
129+
@Retention(RetentionPolicy.RUNTIME)
130+
@Documented
131+
@Import({ EmbeddedServletContainerAutoConfiguration.class,
132+
ServerPropertiesAutoConfiguration.class,
133+
DispatcherServletAutoConfiguration.class, WebMvcAutoConfiguration.class,
134+
HttpMessageConvertersAutoConfiguration.class,
135+
ErrorMvcAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class })
136+
protected static @interface MinimalWebConfiguration {
137+
}
138+
125139
@Configuration
126-
@EnableAutoConfiguration(exclude = { SecurityAutoConfiguration.class,
127-
DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class })
140+
@MinimalWebConfiguration
128141
public static class TestConfiguration {
129142

130143
// For manual testing

spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/DefaultErrorViewIntegrationTests.java

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,22 @@
1616

1717
package org.springframework.boot.autoconfigure.web;
1818

19+
import java.lang.annotation.Documented;
20+
import java.lang.annotation.ElementType;
21+
import java.lang.annotation.Retention;
22+
import java.lang.annotation.RetentionPolicy;
23+
import java.lang.annotation.Target;
24+
1925
import org.junit.Before;
2026
import org.junit.Test;
2127
import org.junit.runner.RunWith;
2228
import org.springframework.beans.factory.annotation.Autowired;
2329
import org.springframework.boot.SpringApplication;
24-
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
25-
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
26-
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
30+
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
2731
import org.springframework.boot.autoconfigure.web.DefaultErrorViewIntegrationTests.TestConfiguration;
2832
import org.springframework.boot.test.SpringApplicationConfiguration;
2933
import org.springframework.context.annotation.Configuration;
34+
import org.springframework.context.annotation.Import;
3035
import org.springframework.http.MediaType;
3136
import org.springframework.test.annotation.DirtiesContext;
3237
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -69,9 +74,19 @@ public void testErrorForBrowserClient() throws Exception {
6974
assertTrue("Wrong content: " + content, content.contains("999"));
7075
}
7176

77+
@Target(ElementType.TYPE)
78+
@Retention(RetentionPolicy.RUNTIME)
79+
@Documented
80+
@Import({ EmbeddedServletContainerAutoConfiguration.class,
81+
ServerPropertiesAutoConfiguration.class,
82+
DispatcherServletAutoConfiguration.class, WebMvcAutoConfiguration.class,
83+
HttpMessageConvertersAutoConfiguration.class,
84+
ErrorMvcAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class })
85+
protected static @interface MinimalWebConfiguration {
86+
}
87+
7288
@Configuration
73-
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class,
74-
HibernateJpaAutoConfiguration.class })
89+
@MinimalWebConfiguration
7590
public static class TestConfiguration {
7691

7792
// For manual testing

0 commit comments

Comments
 (0)