加载不同的 yaml 或属性文件或覆盖某些属性

当我们使用 @SpringApplicationConfiguration 时,它将使用 application.yml [properties]的配置,在某些情况下这是不合适的。因此,要覆盖属性,我们可以使用 @TestPropertySource 注释。

@TestPropertySource(
        properties = {
                "spring.jpa.hibernate.ddl-auto=create-drop",
                "liquibase.enabled=false"
        }
)
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(Application.class)
public class ApplicationTest{

    // ...

}

我们可以使用 @TestPropertySource属性属性来覆盖我们想要的特定属性。在上面的例子中,我们压倒一切的属性 spring.jpa.hibernate.ddl-autocreate-drop。而 liquibase.enabledfalse

加载不同的 yml 文件

如果要完全加载不同的 yml 文件进行测试,可以在 @TestPropertySource 上使用 locations 属性。

@TestPropertySource(locations="classpath:test.yml")
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(Application.class)
public class ApplicationTest{

    // ...

}

或者选择

选项 1:

你也可以加载不同 YML 文件我放置一个 YML 文件上 test > resource 目录

选项 2:

使用 @ActiveProfiles 注释

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@ActiveProfiles("somename")
public class MyIntTest{
}

你可以看到我们正在使用 @ActiveProfiles 注释,我们将 somename 作为值传递。

创建一个名为 application-somename.yml 的文件,测试将加载此文件。