From 797a3cc9d713d5c1d4dc8002b96b6b68d80b9a0b Mon Sep 17 00:00:00 2001 From: Yiding He Date: Wed, 26 Dec 2018 18:12:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BD=93=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=85=B3=E9=97=AD=20web=20=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E6=97=B6=EF=BC=8CWebAutoConfiguration=20=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel-core/pom.xml | 5 ++++ .../core/config/WebAutoConfiguration.java | 3 +++ .../config/WebAutoConfigurationNoWebTest.java | 27 +++++++++++++++++++ .../core/config/WebAutoConfigurationTest.java | 25 +++++++++++++++++ 4 files changed, 60 insertions(+) create mode 100644 kernel-core/src/test/java/cn/stylefeng/roses/core/config/WebAutoConfigurationNoWebTest.java create mode 100644 kernel-core/src/test/java/cn/stylefeng/roses/core/config/WebAutoConfigurationTest.java diff --git a/kernel-core/pom.xml b/kernel-core/pom.xml index ce05656..e315c54 100644 --- a/kernel-core/pom.xml +++ b/kernel-core/pom.xml @@ -32,6 +32,11 @@ + + com.h2database + h2 + test + mysql mysql-connector-java diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/WebAutoConfiguration.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/WebAutoConfiguration.java index 2779541..063a553 100644 --- a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/WebAutoConfiguration.java +++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/WebAutoConfiguration.java @@ -22,6 +22,7 @@ import cn.stylefeng.roses.core.converter.RequestDataMessageConvert; import cn.stylefeng.roses.core.util.MvcAdapter; import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.convert.converter.Converter; @@ -31,6 +32,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupp import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; import javax.annotation.PostConstruct; +import javax.servlet.ServletContext; import java.util.Date; /** @@ -40,6 +42,7 @@ import java.util.Date; * @Date 2018/7/24 下午3:27 */ @Configuration +@ConditionalOnBean(ServletContext.class) public class WebAutoConfiguration extends WebMvcConfigurationSupport { @Autowired diff --git a/kernel-core/src/test/java/cn/stylefeng/roses/core/config/WebAutoConfigurationNoWebTest.java b/kernel-core/src/test/java/cn/stylefeng/roses/core/config/WebAutoConfigurationNoWebTest.java new file mode 100644 index 0000000..f36b1a2 --- /dev/null +++ b/kernel-core/src/test/java/cn/stylefeng/roses/core/config/WebAutoConfigurationNoWebTest.java @@ -0,0 +1,27 @@ +package cn.stylefeng.roses.core.config; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest( + webEnvironment = SpringBootTest.WebEnvironment.NONE, + classes = WebAutoConfiguration.class +) +public class WebAutoConfigurationNoWebTest { + + @Autowired + private ApplicationContext applicationContext; + + @Test + public void testNoWebEnvironment() throws Exception { + // 本测试指定了 webEnvironment = SpringBootTest.WebEnvironment.NONE, + // 在这个情况下 WebAutoConfiguration 应该自动跳过初始化,而不是报错。 + Assert.assertFalse(applicationContext.containsBean("error")); + } +} \ No newline at end of file diff --git a/kernel-core/src/test/java/cn/stylefeng/roses/core/config/WebAutoConfigurationTest.java b/kernel-core/src/test/java/cn/stylefeng/roses/core/config/WebAutoConfigurationTest.java new file mode 100644 index 0000000..ffb1be3 --- /dev/null +++ b/kernel-core/src/test/java/cn/stylefeng/roses/core/config/WebAutoConfigurationTest.java @@ -0,0 +1,25 @@ +package cn.stylefeng.roses.core.config; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest( + classes = WebAutoConfiguration.class +) +public class WebAutoConfigurationTest { + + @Autowired + private ApplicationContext applicationContext; + + @Test + public void testWebEnvironment() throws Exception { + // 在这个情况下 WebAutoConfiguration 应该正常初始化。 + Assert.assertTrue(applicationContext.containsBean("error")); + } +} \ No newline at end of file -- Gitee