@SpringApplicationConfiguration和@ContextConfiguration之间的区别

时间:2016-08-18 14:01:28

标签: java spring junit configuration

关于JUnit测试用例,@SpringApplicationConfiguration@ContextConfiguration之间有什么区别?

3 个答案:

答案 0 :(得分:4)

domains.google.com是Spring Test Framework中的一个注释,它适用于每个Spring应用程序,@ContextConfiguration来自Spring Boot,实际上是一个复合注释,其中包括@SpringApplicationConfiguration自定义ContextConfiguration作为加载程序。

答案 1 :(得分:4)

@ContextConfiguration@SpringApplicationConfiguration都在做同样的事情。加载和配置ApplicationContext以进行集成测试。但@ContextConfiguration有些人缺乏支持。

@ContextConfiguration支持的资源类型

Spring 3.1之前,仅支持基于路径的资源位置(通常是XML配置文件)。从Spring 3.1开始,上下文加载器可以选择支持基于路径的资源或基于类的资源。

从Spring 4.0.4开始,上下文加载器可以选择同时支持基于路径和基于类的资源。因此,@ContextConfiguration可用于声明基于路径的资源位置(通过locations()或value()属性)或带注释的类(通过classes()属性)。

  但是,请注意,只有SmartContextLoader的大多数实现   支持单一资源类型。从Spring 4.1开始,基于路径的资源   位置可以是XML配置文件或Groovy脚本(如果   Groovy在类路径上)。当然,第三方框架可能会   选择支持其他类型的基于路径的资源。

@SpringApplicationConfiguration与标准@ContextConfiguration类似,但使用Spring Boot的SpringApplicationContextLoader

资源链接:

  1. Annotation Type SpringApplicationConfiguration
  2. Annotation Type ContextConfiguration

答案 2 :(得分:0)

  • @ContextConfiguration
    • 加载Spring应用程序上下文
    • 它不会通过完整的Spring Boot处理加载它。
  • @SpringApplicationConfiguration
    • 与@ContextConfiguration大致相同。
    • 加载Spring应用程序上下文,
      • 但还可以启用日志记录功能,以及加载外部属性(application.properties或application.yml)。
    • 编写Spring Boot测试时,@ SpringApplicationConfiguration最多可以代替@ContextConfiguration。应用程序。