我创建了一个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文件夹中。
答案 0 :(得分:1)
我认为这是一个集成测试,而不是单元测试,因为您正在测试各个组件之间的交互。无论如何,我会这样做。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = YourApplication.class)
public class InternationalizationTests() {
@Autowired
ConnectionProperties connectionProperties;
@Test
public void testCorrectTranslationLoaded() {
Assert.assertEquals("english-username", connectionProperties.getUsername());
}
}
您也可以根据需要创建测试配置,您可以指定要加载的转换。然后,您将需要不同的类来测试不同的配置。请参阅文档:http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html