Java Spring Boot 2和JUnit 5的正确配置
使用Spring Boot 2.0.0.RC2 我编写了一个配置类:Java Spring Boot 2和JUnit 5的正确配置,java,spring,maven,spring-boot,junit5,Java,Spring,Maven,Spring Boot,Junit5,使用Spring Boot 2.0.0.RC2 我编写了一个配置类: @Configuration @ConditionalOnProperty("launchdarkly.sdkKey") public class LDClientConfiguration { @Bean public LDClientInterface ldClient(LDClientConfigurationProperties props) { return new LDClien
@Configuration
@ConditionalOnProperty("launchdarkly.sdkKey")
public class LDClientConfiguration {
@Bean
public LDClientInterface ldClient(LDClientConfigurationProperties props) {
return new LDClient(props.getSdkKey(), props.getLDConfig());
}
}
和ConfigurationProperties类:
@Component
@ConfigurationProperties(prefix = "launchdarkly")
public class LDClientConfigurationProperties {
private String sdkKey;
// more attributes
public void setSdkKey(String sdkKey) {
this.sdkKey = sdkKey;
}
// more setters
public LDConfig getLDConfig() {
LDConfig.Builder builder = new LDConfig.Builder();
// set builder w/ attributes
return builder.build();
}
}
我正试图对此进行测试,从src/test/resources/application-test.yml读取配置:
launchdarkly:
sdkKey: <redacted>
如果我用@ExtendWith(SpringExtension.class)
然后它尝试加载
com/company/spring/launchdarkly/LDClientConfigurationTestContext.xml
,然后加载com/company/spring/launchdarkly/LDClientConfigurationTestContext.groovy
,但不查找yml文件。我的测试类上的这组注释似乎有效:
@SpringBootApplication
@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = { <array of classes goes here> })
@springboot应用程序
@ExtendWith(SpringExtension.class)
@SpringBootTest(类={})
Spring Boot 2和JUnit 5集成测试的正确注释集是(在Kotlin中):
您可以通过字段上的@LocalServerPort
注释获取服务正在运行的端口。在Java中:
您的测试类是什么样子的?添加到post^的测试类如果您最终的目标只是从特定于测试上下文的属性文件加载测试的属性,Spring Boot为此提供了一个简单的概要文件机制:是的,这正是我试图做的,但无法让它工作。它一直试图将文件读取为XML,而不是.properties或.yml。我已经将snakeyaml添加到test Classpath.Hm中,至少在您发布的代码中,您在
LDClientConfiguration.ldClient()
中调用的getter不存在。您是在这里省略了它还是在实际代码中也没有它?@SpringBootApplication
不应该添加到测试类中。
@SpringJUnitConfig(SpringBootContextLoader.class)
public class LDClientConfigurationPropertiesTest {
@Autowired
private LDClientConfigurationProperties props;
@Test
public void test() {
LDConfig config = props.getLDConfig();
assertThat(config, notNullValue());
}
}
@SpringBootApplication
@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = { <array of classes goes here> })
@ExtendWith(SpringExtension::class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles("dev") // optional
@TestInstance(TestInstance.Lifecycle.PER_CLASS) // optional
@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)