考虑这个例子
@Test
public TestMyProjectIntegration {
@Rule
public JpaRule jpaRule = new JpaRule(H2);
@Test
...
}
H2
,localhost
数据库运行我的集成测试
MySQL
// Jenkins staging
数据库运行集成测试
我最初想过使用Spring Profiles并使用spring.profiles.active=development
和spring.profiles.active=staging
我可以控制,但
因为我将JpaRule
硬编码为H2
,所以当MySQL
更改
spring.profiles.active
问题
在测试期间,指向不同数据库的春季推荐方法是什么?
答案 0 :(得分:0)
您可以使用系统属性调用测试,传递数据库详细信息,如-Dtest.database=H2
,并在从jenkins调用测试时更改值
@Rule
public JpaRule jpaRule = new JpaRule(System.getProperty("test.database"));
答案 1 :(得分:0)
你的中途....所以在每个配置文件中你需要相同的bean id dataSource
<beans profiles="dev">
<bean id="dataSource" class="H2"/>
</beans>
<beans profiles="stage">
<bean id="dataSource" class="MySQL"/>
</beans>
然后在JpaRule
@Rule
public JpaRule jpaRule = new JpaRule(dataSource);
然后确保在正确的环境中设置正确的spring.active.profile。