0

我正在编写一个集成测试框架,在我的父测试类中,我有以下内容:

@ContextConfiguration(loader = AnnotationConfigContextLoader.class)
public abstract class IntegrationTestParent extends AbstractTestNGSpringContextTests {

    ...

    @Configuration
    @EnableAutoConfiguration
    @ComponentScan("redacted")
    public static class AutomationTestConfig {
    }
}

这给了我很大的灵活性,但是,我注意到我的自定义banner.txt文件不再被打印出来,我的 application.properties 文件(它设置spring.output.ansi.enabled=ALWAYS和一些 maven 过滤的应用程序变量)也不会被读取。

除了一些真正的 leet figlet 生成的 ascii 艺术之外,它还打印了很多关于 JVM 和各种系统和环境属性的方便调试信息,所以我对远程环境(la Jenkins 和 Bamboo 或任何人的任意笔记本电脑)有了一个非常好的想法) 他们继续跑。

有没有办法让这个行为除了@ContextConfiguration(loader = AnnotationConfigContextLoader.class)

4

1 回答 1

0

我找到了一个中间解决方案。我将它称为中间,因为我得到了我想要的行为(基于注释的上下文,可以在我有其他配置和 bean 的下游项目中加载等)但我没有使用AnnotationConfigContextLoader该类。

我把它换成了SpringApplicationContextLoader. 根据javadoc

可用于测试 Spring Boot 应用程序(通常使用 SpringApplication 启动的应用程序)的 ContextLoader。可用于测试非 Web 功能(如存储库层)或启动完全配置的嵌入式 servlet 容器。使用@WebIntegrationTest(或@IntegrationTest 和@WebAppConfiguration)来表明你想使用一个真正的servlet 容器或单独使用@WebAppConfiguration 来使用一个MockServletContext。

如果在测试类中提供了@ActiveProfiles,它们将用于创建应用程序上下文。

根据前几句话,这基本上就是我想要的。

于 2017-03-08T00:03:49.127 回答