Java SpringBoot单元测试配置

Java SpringBoot单元测试配置,java,spring,unit-testing,spring-boot,Java,Spring,Unit Testing,Spring Boot,我创建了一个SpringBoot1.4.0应用程序,我想使用yaml文件将其国际化 我创建了一个类,用于从yaml文件加载配置,就像这里的文档中解释的那样 我想创建一个测试来检查我的类是否正确地从yaml文件加载了属性 如果我们保留文档中的示例,如何创建一个单元测试来加载yaml文件(与application.yml同名),并检查方法getUsername()是否会从yaml文件返回值 以下是我拥有但仍无法加载用户名的代码: @Component @ConfigurationPropertie

我创建了一个SpringBoot1.4.0应用程序,我想使用yaml文件将其国际化

我创建了一个类,用于从yaml文件加载配置,就像这里的文档中解释的那样

我想创建一个测试来检查我的类是否正确地从yaml文件加载了属性

如果我们保留文档中的示例,如何创建一个单元测试来加载yaml文件(与application.yml同名),并检查方法
getUsername()
是否会从yaml文件返回值


以下是我拥有但仍无法加载用户名的代码:

@Component
@ConfigurationProperties(locations = "classpath:mylocalizedprops.yml", prefix="connection")
public class ConnectionProperties {

    private String username;

    // ... getters and setters

}
还有考试班

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Application.class)
public class InternationalizationTest {
    @Autowired
    private ConnectionProperties connectionProperties;

    public void propsShouldBeNotNull() {
        assertNotNull(connectionProperties);
    }

    public void userNameShouldBeCorrect() {
        assertEquals(connectionProperties.getUsername(), expectedUserName);
    }
}

我未通过用户名应为正确的测试。文件MyLoalLealEd.Upj.YML位于Maven结构化应用程序的SRC/主/资源文件夹中。

< P>我认为这是一个集成测试,而不是单元测试,因为您正在测试各个组件之间的交互。不管怎样,我会这样做

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = YourApplication.class)
public class InternationalizationTests() {

  @Autowired
  ConnectionProperties connectionProperties;

  @Test
  public void testCorrectTranslationLoaded() {
    Assert.assertEquals("english-username", connectionProperties.getUsername());
  }    

}

如果愿意,还可以创建一个测试配置,可以指定要加载的转换。然后需要不同的类来测试不同的配置。查看文档:

我用代码更新了我的帖子,我无法正确加载文件。文件是在
/src/test/resources
还是
src/main/resources
中?如果它在
src/main/resources
中,您需要将它放在测试资源中,或者将主源代码集作为测试源代码集的一部分加载。它在src/main/resources中,但我认为最好在src/test/resources中创建一个用于测试的源代码集,我该如何做?复制并粘贴文件。缺点是您现在必须复制所有内容。如果我想继续使用src/main/resources中的文件(实际上是这样,但不起作用),如何继续?假设您使用的是gradle,那么您需要将
/src/main/resources
添加到“测试”源集中。在
build.gradle
中添加如下内容:
sourceSet{test{resources[${project.projectDir}/src/${sourceSet.name}/resources],${project.projectDir}/src/main/resources]}