在每个spring boot @Test上重写单个@Configuration类

在我的spring boot应用程序中,我想在所有@Configuration测试中仅使用测试配置(尤其是我的@EnableAuthorizationServer @Configuration类)覆盖我的一个类。

到目前为止,在对Spring Boot测试功能和Spring Integration测试功能进行概述之后,还没有一个简单的解决方案浮出水面:

  • @TestConfiguration:用于扩展,而不是覆盖;
  • @ContextConfiguration(classes=…​)@SpringApplicationConfiguration(classes =…​)让我重写整个配置,而不仅仅是一个类;
  • 建议使用@Configurationa 内部的类@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

回到顶部