摘要:因为只有这样才能够在测试环境下发现生产环境的问题,也避免出现一些因为配置不同导致的奇怪问题。而方法则能够不改变原有配置不提供新的配置的情况下,就能够关闭。
Github地址
在Chapter 1: 基本用法 - 使用Spring Boot Testing工具里提到:
除了单元测试(不需要初始化ApplicationContext的测试)外,尽量将测试配置和生产配置保持一致。比如如果生产配置里启用了AutoConfiguration,那么测试配置也应该启用。因为只有这样才能够在测试环境下发现生产环境的问题,也避免出现一些因为配置不同导致的奇怪问题。
那么当我们想在测试代码里关闭Auto Configuration如何处理?
方法1:提供另一套测试配置
方法2:使用@OverrideAutoConfiguration
方法1虽然能够很好的解决问题,但是比较麻烦。而方法2则能够不改变原有配置、不提供新的配置的情况下,就能够关闭Auto Configuration。
在本章节的例子里,我们自己做了一个Auto Configuration类,AutoConfigurationEnableLogger:
@Configuration public class AutoConfigurationEnableLogger { private static final Logger LOGGER = LoggerFactory.getLogger(AutoConfigurationEnableLogger.class); public AutoConfigurationEnableLogger() { LOGGER.info("Auto Configuration Enabled"); } }
并且在META-INF/spring.factories里注册了它:
org.springframework.boot.autoconfigure.EnableAutoConfiguration= me.chanjar.annotation.overrideac.AutoConfigurationEnableLogger
这样一来,只要Spring Boot启动了Auto Configuration就会打印出日志:
2017-08-24 16:44:52.789 INFO 13212 --- [ main] m.c.a.o.AutoConfigurationEnableLogger : Auto Configuration Enabled例子1:未关闭Auto Configuration
源代码见BootTest:
@SpringBootTest @SpringBootApplication public class BootTest extends AbstractTestNGSpringContextTests { @Test public void testName() throws Exception { } }
查看输出的日志,会发现Auto Configuration已经启用。
例子2:关闭Auto Configuration然后我们用@OverrideAutoConfiguration关闭了Auto Configuration。
源代码见BootTest:
@SpringBootTest @OverrideAutoConfiguration(enabled = false) @SpringBootApplication public class BootTest extends AbstractTestNGSpringContextTests { @Test public void testName() throws Exception { } }
再查看输出的日志,就会发现Auto Configuration已经关闭。
参考文档Spring Framework Testing
Spring Boot Testing
Context configuration with test property sources
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/70283.html
摘要:地址提供了,能够很方便的来测试。同时也提供了更进一步简化了测试需要的配置工作。本章节将分别举例说明在不使用和使用下如何对进行测试。例子测试的关键是使用对象,利用它我们能够在不需启动容器的情况下测试的行为。 Github地址 Spring Testing Framework提供了Spring MVC Test Framework,能够很方便的来测试Controller。同时Spring...
摘要:地址是提供的方便测试序列化反序列化的测试工具,在的文档中有一些介绍。例子简单例子源代码见使用通包下的文件测试结果是否正确或者使用基于的校验例子测试可以用来测试。这个例子里使用了自定义的测试代码例子使用事实上也可以配合一起使用。 Github地址 @JsonTest是Spring Boot提供的方便测试JSON序列化反序列化的测试工具,在Spring Boot的文档中有一些介绍。 需要注...
摘要:源代码见需要注意的是,如果是专供某个测试类使用的话,把它放到外部并不是一个好主意,因为它有可能会被扫描到,从而产生一些奇怪的问题。 Github地址 既然我们现在开发的是一个Spring项目,那么肯定会用到Spring Framework的各种特性,这些特性实在是太好用了,它能够大大提高我们的开发效率。那么自然而然,你会想在测试代码里也能够利用Spring Framework提供的特...
摘要:地址在使用工具中提到在测试代码之间尽量做到配置共用。本章将列举几种共享测试配置的方法我们可以将测试配置放在一个里,然后在测试或中引用它。也可以利用的及自定义机制,提供自己的用在测试配置上。 Github地址 在使用Spring Boot Testing工具中提到: 在测试代码之间尽量做到配置共用。...能够有效利用Spring TestContext Framework的缓存机制,Ap...
摘要:地址可以用来覆盖掉来自于系统环境变量系统属性的属性。同时优先级高于。利用它我们可以很方便的在测试代码里微调模拟配置比如修改操作系统目录分隔符数据源等。源代码例子使用工具也可以和一起使用。源代码见参考文档 Github地址 @TestPropertySource可以用来覆盖掉来自于系统环境变量、Java系统属性、@PropertySource的属性。 同时@TestPropertySou...
阅读 3527·2021-09-22 15:50
阅读 3232·2019-08-30 15:54
阅读 2747·2019-08-30 14:12
阅读 3057·2019-08-30 11:22
阅读 2078·2019-08-29 11:16
阅读 3574·2019-08-26 13:43
阅读 1191·2019-08-23 18:33
阅读 918·2019-08-23 18:32