我知道Spring在出现swing组件弹出时会出现加载上下文的问题。我读过这里如何成功地加载上下文。但是,集成测试呢?
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引用中找不到通过集成测试将上下文设置为headless的任何方法。
发布于 2016-02-23 10:04:57
您可以通过自定义的SpringApplication定制集成测试使用的SpringApplicationContextLoader。与其使用配置默认@SpringApplicationConfiguration的SpringApplicationContextLoader,不如使用@ContextConfiguration和loader属性来配置自定义上下文加载器:
@ContextConfiguration(classes = MyApplication.class, loader=CustomSpringApplicationContextLoader.class)在CustomSpringApplicationContextLoader实现中,重写getSpringApplication()并将headless设置为false
public class CustomSpringApplicationContextLoader extends SpringApplicationContextLoader {
@Override
protected SpringApplication getSpringApplication() {
return new SpringApplicationBuilder().headless(false).build();
}
}https://stackoverflow.com/questions/35560139
复制相似问题