【发布时间】:2016-11-21 17:31:56
【问题描述】:
我创建了一个 spring-boot 1.4.0 应用程序,我想使用 yaml 文件对其进行国际化。
我创建了一个用于从 yaml 文件加载配置的类,就像这里 http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-typesafe-configuration-properties 的文档中解释的那样。
我想创建一个测试来检查我的类是否正确加载了 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);
}
}
我未能通过 userNameShouldBeCorrect 测试。文件 mylocalizedprops.yml 位于 Maven 结构化应用程序的 src/main/resources 文件夹中。
【问题讨论】:
-
文件在
/src/test/resources还是src/main/resources中?如果它在src/main/resources中,则需要将其放入测试资源中,或者将主源集加载为测试源集的一部分。 -
它在 src/main/resources 但我认为最好在 src/test/resources 中创建一个用于测试目的,我该怎么做?
-
复制并粘贴文件。缺点是您现在必须复制所有内容。
-
如果我想继续使用 src/main/resources 中的文件(实际上是这样,但不起作用)如何进行?
-
假设您正在使用 gradle,您希望将
/src/main/resources添加到您的“测试”源集中。将以下内容添加到您的build.gradle:sourceSets { test { resources [${project.projectDir}/src/${sourceSet.name}/resources], [${project.projectDir}/src/main/resources] } }
标签: java spring unit-testing spring-boot