在我的spring boot应用程序中,我想在所有@Configuration测试中仅使用测试配置(尤其是我的@EnableAuthorizationServer @Configuration类)覆盖我的一个类。
@Configuration
@EnableAuthorizationServer @Configuration
到目前为止,在对Spring Boot测试功能和Spring Integration测试功能进行概述之后,还没有一个简单的解决方案浮出水面:
@TestConfiguration
@ContextConfiguration(classes=…)
@SpringApplicationConfiguration(classes =…)
@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")。查看完整的代码:
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定义标注为确保这一具有优先权如果不止一个被发现。