1 背景
Idea单测4.xSpring项目常见一种写法如下
- @RunWith
- applicationContext
- AbstractTransactionalJUnit4SpringContextTests
@RunWith(SpringJUnit4ClassRunner.class)
@Rollback(false)
@ContextConfiguration(locations = {"classpath:/applicationContext.xml"})
public abstract class xxTest extends AbstractTransactionalJUnit4SpringContextTests {
为了进行多环境配置,常见的有两种做法
- 多profile,每个profile中只包含属性文件,xml模配置文件只有一套。通过maven模版替换插件根据环境生成不同环境下的xml文件。常见插件 - maven autoconfig
- 多profile,每个profile中同时包含属性描述文件(.properties)和xml配置文件。
本文对这两种方式在单测环境下的选择进行总结。
2 多profile与maven模版插件
2.1 项目结构
- 不同profile中的属性配置
- xml.vm模版文件,只有一套
spring是目标位置,可以配置一份默认文件。当模版替换插件运行后,会将目标文件替换为不同环境下的xml配置文件。
2.2 环境选择
默认情况下xml配置不存在,因此需要先执行编译,并选择相应的配置环境,随后可运行测试,则以对应环境的配置进行测试。
1.mvn compile -Ptest
- autoconfig插件生成配置文件
2.运行测试时环境环境调整
显然xml配置可以指定为我们日常使用的线下测试配置。这种线上在编译打包时选择环境即可。
3 多profile 多配置xml配置文件
这种结构比较常见。spring profile设置有多种形式[1]。我们通过idea建立的是maven工程,可以通过idea的profiles面板设置[2]。当我们通过idea构建[3]后,会在构建输出目录生成编译后的class文件和对应环境的资源文件。 最后我们再进行测试,测试启动后就通过对应环境的配置进行测试。
不同环境文件的生成可以通过清理、重新构建查看构建输出目录来观察。
4 总结
多profile环境,有多种选择某环境profile的方式。
首先了解有哪些方式,这些方式执行的优先级和使用场景。
其次,由于我们使用的是idea,就要想到当前环境下,idea执行一个测试前做哪些事情。随后查阅idea 官方说明文档,就能确定在idea中一个maven 工程是有哪些选择profile的方式。
[1].https://www.baeldung.com/spring-profiles
[2]. idea maven profile,https://www.jetbrains.com/help/idea/work-with-maven-profiles.html
[3].构建输出文件,https://www.jetbrains.com/help/idea/compiling-applications.html#compilation_output_folders