如何解决无法执行应忽略被测单元上的Spring注释的单元测试
我正在尝试对具有@Async("asyncExecutor")
批注方法的服务类执行单元测试。这是一个普通的JUnit测试类,没有Spring运行器,也没有打算在单元测试中完全使用Spring。我得到了例外,
BeanFactory must be set on AnnotationAsyncExecutionAspect to access qualified executor 'asyncExecutor'
asyncExectuor
是正常执行期间要使用的bean的名称。我的配置类如下所示,我在运行时通过添加mode = AdviceMode.ASPECTJ
部分解决了先前的错误消息。此服务可以在运行时正常运行,而不会出现异步问题。
@Configuration
@EnableAsync(mode = AdviceMode.ASPECTJ)
public class AsyncConfiguration {
@Bean(name = "asyncExecutor")
public Executor asyncExecutor() {
...
}
}
我不理解为什么在单元测试中根本要构造Spring上下文。测试类仅在方法上带有@Test
的注释,没有类注释,也没有提及Spring。我希望将此服务类方法作为常规方法进行单元测试,而忽略了异步特性,但是由于某种原因,正在处理注释。
我正在为一个我不完全了解的gradle + Spring 4项目做贡献。我是否应该寻找所有默认情况下是否为所有测试创建Spring上下文的东西?
解决方法
您已经注意到,Spring上下文未加载,这就是您出错的原因。尝试通过添加@RunWith和@ContextConfiguration批注在测试中初始化Spring上下文
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。