在每个spring boot @Test上重写单个@Configuration类
在我的spring boot应用程序中,我想在所有@Configuration
测试中仅使用测试配置(尤其是我的@EnableAuthorizationServer @Configuration
类)覆盖我的一个类。
到目前为止,在对Spring Boot测试功能和Spring Integration测试功能进行概述之后,还没有一个简单的解决方案浮出水面:
@TestConfiguration
:用于扩展,而不是覆盖;@ContextConfiguration(classes=…)
并@SpringApplicationConfiguration(classes =…)
让我重写整个配置,而不仅仅是一个类;- 建议使用
@Configuration
a 内部的类@Test
来覆盖默认配置,但未提供示例。有什么建议?
回答:
内部测试配置
用于测试的内部@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定义一个独立的Configuration
类@Profile("test")
。然后,让你的测试班级通过激活配置文件@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();
}
}
@Primary
在@Primary
对bean定义标注为确保这一具有优先权如果不止一个被发现。
以上是 在每个spring boot @Test上重写单个@Configuration类 的全部内容, 来源链接: utcz.com/qa/426662.html