gpt4 book ai didi

java - Spring Boot 单元测试配置

转载 作者:行者123 更新时间:2023-12-02 03:13:23 27 4
gpt4 key购买 nike

我创建了一个 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 文件夹中。

最佳答案

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

@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

关于java - Spring Boot 单元测试配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40726055/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com