考虑这个例子

@Test
public TestMyProjectIntegration {

  @Rule
  public JpaRule jpaRule = new JpaRule(H2);

  @Test
  ...
}
  • 我想对H2
  • 中的localhost数据库运行集成测试
  • 我想对MySQL中的staging数据库运行集成测试// Jenkins

  • 我最初想到使用Spring Profiles以及可以控制的spring.profiles.active=developmentspring.profiles.active=staging,但是

    因为我将JpaRule硬编码为H2,所以我不知道当MySQL更改时如何将此属性更改为spring.profiles.active

    问题
    春天推荐的在测试过程中指向不同数据库的方法是什么?

    最佳答案

    您可以使用传递数据库详细信息(例如-Dtest.database=H2)的系统属性来调用测试,并在从jenkins调用测试时更改值

    @Rule
    public JpaRule jpaRule = new JpaRule(System.getProperty("test.database"));
    

    10-04 20:08