在每次春季启动时都覆盖一个@Configuration类@Test
作者:互联网
在我的春季启动应用程序中,我想在我的所有测试中覆盖一个带有测试配置的@Configuration类(特别是我的@EnableAuthorizationServer @Configuration类).
到目前为止,在概述了spring boot testing features和spring integration testing features之后,没有出现直接的解决方案:
> @TestConfiguration:它用于扩展,而不是覆盖;
> @ContextConfiguration(classes = …)和@SpringApplicationConfiguration(classes = …)让我覆盖整个配置,而不仅仅是一个类;
>建议@Test内部的@Configuration类覆盖默认配置,但不提供示例;
有什么建议么?
解决方法:
内部测试配置
测试的内部@Configuration示例:
@RunWith(SpringRunner.class)
@SpringBootTest
public class SomeTest {
@Configuration
static class ContextConfiguration {
@Bean
@Primary //may omit this if this is the only SomeBean defined/visible
public SomeBean someBean () {
return new SomeBean();
}
}
@Autowired
private SomeBean someBean;
@Test
public void testMethod() {
// test
}
}
可重复使用的测试配置
如果您希望将测试配置重用于多个测试,则可以使用Spring Profile @Profile(“test”)定义一个独立的Configuration类.然后,让您的测试类使用@ActiveProfiles(“test”)激活配置文件.查看完整代码:
@RunWith(SpringRunner.class)
@SpringBootTests
@ActiveProfiles("test")
public class SomeTest {
@Autowired
private SomeBean someBean;
@Test
public void testMethod() {
// test
}
}
@Configuration
@Profile("test")
public class TestConfiguration {
@Bean
@Primary //may omit this if this is the only SomeBean defined/visible
public SomeBean someBean() {
return new SomeBean();
}
}
@主
bean定义上的@Primary注释是为了确保如果找到多个,那么这个注释将具有优先级.
标签:spring,spring-boot,spring-test 来源: https://codeday.me/bug/20190928/1826971.html