Spring Boot集成测试使用包含swing内容的config类测试HeadlessException

时间:2016-02-22 17:33:08

标签: java spring spring-boot

我知道当弹出组件弹出时,Spring Boot在加载上下文时遇到问题。我已阅读here如何成功加载上下文。但是,集成测试呢?

MyApplicationTests.java

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MyApplication.class)
public class DemoApplicationTests {

@Test
public void contextLoads() {
}
}

MyApplication.java

public static void main(String[] args) {
    try(ConfigurableApplicationContext context = new SpringApplicationBuilder
            (DesktopAppConfig.class)
            .headless(false).run(args)) {
    }

DesktopAppConfig.java

@Configuration
public class DesktopAppConfig {

@Bean
public Object someBean() {
        JOptionPane.showMessageDialog(null, "message");
    return new Object();
    }
}

这个简单的集成测试将抛出一个java.awt.HeadlessException,我无法在Spring Boot引用中找到任何通过集成测试将上下文设置为无头的方法。

1 个答案:

答案 0 :(得分:5)

您可以通过自定义c.html自定义集成测试所使用的SpringApplication。您应该使用SpringApplicationContextLoader@SpringApplicationConfiguration属性来配置自定义上下文加载器,而不是使用SpringApplicationContextLoader来配置默认@ContextConfiguration的使用:

loader

@ContextConfiguration(classes = MyApplication.class, loader=CustomSpringApplicationContextLoader.class) 实施中,覆盖CustomSpringApplicationContextLoader并将getSpringApplication()设置为headless

false