文档章节

Spring、Spring Boot和TestNG测试指南 - @OverrideAutoConfiguration

jarchan
 jarchan
发布于 2017/09/01 09:03
字数 420
阅读 113
收藏 6

码云地址

Chapter 1: 基本用法 - 使用Spring Boot Testing工具里提到:

除了单元测试(不需要初始化ApplicationContext的测试)外,尽量将测试配置和生产配置保持一致。比如如果生产配置里启用了AutoConfiguration,那么测试配置也应该启用。因为只有这样才能够在测试环境下发现生产环境的问题,也避免出现一些因为配置不同导致的奇怪问题。

那么当我们想在测试代码里关闭Auto Configuration如何处理?

  1. 方法1:提供另一套测试配置
  2. 方法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已经关闭。

参考文档

© 著作权归作者所有

共有 人打赏支持
jarchan

jarchan

粉丝 60
博文 11
码字总数 8798
作品 2
崇明
技术主管
私信 提问
Spring Boot 和 testNG 和 eclipse背景色

通过之前的博文,我们已经验证,Spring环境下完成access数据访问没有问题。下面我们直接在Spring环境下部署我们的升级项目。 1.导入Spring Boot Spring Boot是Spring的子项目,用来解决项目配...

pandamonica
2017/09/19
0
0
eclipse上cxf与testNG的冲突

我打算在eclipse上的一个maven项目的某一个类发布,成为web service,打算使用cxf进行发布。 最初这个测试用的maven项目是这样的: 也就是说,在导入cxf之前,这个maven项目的功能是可以正常...

pandamonica
2018/09/07
0
0
JBoss Developer Studio 4.1 发布

JBoss Developer Studio 4.1 发布了,这是一个更新版本,主要包括: 基于 Eclipse 3.6.2 (Helios SR2) 修复了很多主要部件的bug 完全支持 BPEL 编辑器 同时 4.1 包含经过认证的第三方附加包:...

红薯
2011/08/19
923
0
Java HeartBeat 2.0.0 发布,心跳检测应用服务器的 Spring-Boot 程序

Java HeartBeat 2.0.0版本已经发布, 使用Spring-Boot框架, 全新的"零配置"设计,向微服务化靠近,抛掉沉重的XML配置文件.Java HeartBeat 是心跳检测应用服务器(如 Tomcat,Jetty)的 Java Web 应...

monkeyk7
2018/02/22
1K
2
xml参数化、自动化单元测试设计

最近在做单元测试相关的东西,有一些想法,也研究实现了一部分,和大家分享。 单元测试的用例要和代码分离,采用xml的格式。 每一个单元测试类对应一个xml,采用如下格式: 33333 MD5 1001 42...

千斤难买春秋醉
2014/02/21
912
1

没有更多内容

加载失败,请刷新页面

加载更多

深入理解JVM—JVM内存模型

深入理解JVM—JVM内存模型 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存...

onedotdot
32分钟前
1
0
MVC、MVCS、MVVM、MVP、VIPER等这么多架构模式哪一个好呢?

在项目开启阶段,其中一个很重要的环节就是选架构。 那么面对目前已知的这么多架构模式我们该怎么选择呢?这确实是个很让人头疼的问题! 下面我就在这里梳理一下目前常见的一些架构模式。 先...

Java干货分享
今天
4
0
简单模仿配置文件的反射机制

//Student类 public class Student { public void love() { System.out.println("python"); } } //Tesy类 public class Tesy { public static void main(String[] args) throws Exceptio......

南桥北木
今天
2
0
你真的需要了解一下CSS变量 var()的用法

当Web项目变得越来越大时,他的CSS会变得像天文数字那么大而且还变得混乱。为了帮助我们解决这个问题,新的CSS变量很快就会出现在主流浏览器中,它让开发人员能够重用并轻松编辑重复出现的C...

前端小攻略
今天
1
0
嵌入式应用选择合适的微控制器

为嵌入式应用选择微控制器有几个原因,即低成本,高集成度,增加可靠性,节省空间等。 准备所需硬件接口列表使用微控制器的基本硬件框图,准备一份微控制器需要支持的所有外设接口的列表。微...

linux-tao
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部