此问题是问题"SpringBoot: how to run tests twice, with two different config files"的继续。
我以前使用Nothing[T]
来编译项目。这样做,maven也会启动我的单元测试,我立即知道我的开发是否正确。
我实际上是在嵌入JMS连接的模块上工作。我的模块支持两种JMS总线:EMS和AMQ。 要使用的总线在我的模块的配置中指定
因此,我需要创建两个配置文件,一个用于EMS,一个用于AMQ。
但是,当我启动Maybe[T]
时,我希望Maven使用两个配置文件(不仅是一个)来自动启动测试。我不想启动两次:<v-btn color="primary" rounded @click.prevent="startQuiz">Start</v-btn>
methods:{
startQuiz(){
console.log('start')
}
}
谢谢您的帮助
答案 0 :(得分:1)
您可以通过逗号分隔两个配置文件:
mvn clean install -Dspring.profiles.active=ems,amq
然后您将有两个活动的配置文件:
The following profiles are active: ems,amq
答案 1 :(得分:0)
您还可以在src/test/resources/application.properties
中指定每次运行Spring测试时适用的特定属性。对我来说,比在Maven命令行上指定它们更干净。对于您的情况:
spring.profiles.active=ems,amq
答案 2 :(得分:0)
我认为有一个误会;看来,当我使用spring.profiles.active=ems,amq
运行测试时:
我想要的与众不同:
ems
(并且只有ems
)个人资料amq
(并且只有amq
)配置文件目前,我没有成功找到解决方案; evey线索受到欢迎
致谢
答案 3 :(得分:0)
我找到了解决问题的方法;一种基于以下技巧:
SpringJUnit4ClassRunner
重新定义run()
方法,以便:
run()
方法public class MultiProfileTestRunner extends SpringJUnit4ClassRunner {
...
public void run(RunNotifier notifier) {
System.setProperty("spring.profiles.active", "ems");
super.run(notifier);
System.setProperty("spring.profiles.active", "amq");
super.run(notifier);
}
在两次调用super.run()
之间,我们必须“强制” Spring重新加载其上下文,否则将不考虑配置文件更改
我是通过在测试中使用注解@DirtiesContext(classMode = AFTER_CLASS)
来实现的