java - Spring Boot 单元测试配置

标签 java spring unit-testing spring-boot

我创建了一个 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/

相关文章:

java - 如何处理 API 中格式不正确的请求

java - 如何为 Mac/Windows 捆绑 Java 应用程序?

java - 如何使用 ByteBuddy 向现有实例添加字段?

javascript - 无法对通过 Controller 发生的 http 调用进行单元测试

java - 使用 simpleDateFormat 解析异常

java - 在 Spring 中验证域模型

spring - 从 Spring Listener 方法激活的 JavaFX 进度条组件

.net - 自动夹具和最小起订量 v4

android - 自定义阴影对象在 Robolectric 中如何工作?

java - Cordova android 应用程序,图像覆盖在摄像机上