首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring集成测试包含swing内容的配置类的HeadlessException

Spring集成测试包含swing内容的配置类的HeadlessException
EN

Stack Overflow用户
提问于 2016-02-22 17:33:07
回答 1查看 1.2K关注 0票数 1

我知道Spring在出现swing组件弹出时会出现加载上下文的问题。我读过这里如何成功地加载上下文。但是,集成测试呢?

MyApplicationTests.java

代码语言:javascript
复制
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MyApplication.class)
public class DemoApplicationTests {

@Test
public void contextLoads() {
}
}

MyApplication.java

代码语言:javascript
复制
public static void main(String[] args) {
    try(ConfigurableApplicationContext context = new SpringApplicationBuilder
            (DesktopAppConfig.class)
            .headless(false).run(args)) {
    }

DesktopAppConfig.java

代码语言:javascript
复制
@Configuration
public class DesktopAppConfig {

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-23 10:04:57

您可以通过自定义的SpringApplication定制集成测试使用的SpringApplicationContextLoader。与其使用配置默认@SpringApplicationConfigurationSpringApplicationContextLoader,不如使用@ContextConfigurationloader属性来配置自定义上下文加载器:

代码语言:javascript
复制
@ContextConfiguration(classes = MyApplication.class, loader=CustomSpringApplicationContextLoader.class)

CustomSpringApplicationContextLoader实现中,重写getSpringApplication()并将headless设置为false

代码语言:javascript
复制
public class CustomSpringApplicationContextLoader extends SpringApplicationContextLoader {

    @Override
    protected SpringApplication getSpringApplication() {
        return new SpringApplicationBuilder().headless(false).build();
    }

}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35560139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档