在测试上下文中禁用@Async调用

时间:2017-11-01 12:43:43

标签: java spring asynchronous junit spring-test

我正在尝试使用@Async测试注释的void方法。像这样的Smth:

    @Async
    public void asyncMethod()
    {
        //some actions
    }

我知道有能力在测试中关闭任何执行不将@EnableConfig添加到我的测试弹簧配置文件中。 问题是我的测试弹簧配置类包含.xml配置。并且在该配置中启用了异步调用属性。 这是我的测试配置类:

@Configuration
@ImportResource(value = {/some paths to xml contexts})
@ComponentScan(basePackages = { "package" })
public class TestApplication
{
    // beans
}

这就是在xml配置中启用异步调用的方式:

<task:annotation-driven executor="parallelUpdateExecutor" scheduler="scheduler" mode="aspectj"/>

我感兴趣,是否有能力在测试弹簧上下文中关闭异步调用? 感谢。

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用 bean定义配置文件

您可以将<task:annotation-driven ...声明放在XML文件的嵌套<beans profile="async" ...部分中,然后仅通过@ActiveProfiles("async")为需要它的测试激活该配置文件。

此致

Sam( Spring TestContext Framework的作者