Mockito Bug在Spring 2.0.0.RELEASE
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mockito Bug在Spring 2.0.0.RELEASE相关的知识,希望对你有一定的参考价值。
我使用最新版本的Spring(2.0.0.RELEASE)更新了我的项目,而我的测试工作在2.0.0.RC1,现在它不起作用,它一直给我这个错误:
org.mockito.exceptions.base.MockitoException:
Cannot instantiate @InjectMocks field named 'service'! Cause: the type 'PersonService' is an interface.
You haven't provided the instance at field declaration so I tried to construct the instance.
Examples of correct usage of @InjectMocks:
@InjectMocks Service service = new Service();
@InjectMocks Service service;
//and... don't forget about some @Mocks for injection :)
在这里,我创建了一个最小项目,您可以在其中更改pom文件中的版本,以使其在2.0.0.RC1上成功并在2.0.0.RELEASE中失败。
对于完整的最小测试 - 请转向gituhub。
答案
来自@InjectMocks
的文档
Mockito无法实例化内部类,本地类,抽象类和接口。
在您的情况下,您应该在测试中使用:
@InjectMocks
private PersonServiceImpl underTest;
我已经从github检查过您的样本,如果您更改为服务的实现 - 将通过测试
以上是关于Mockito Bug在Spring 2.0.0.RELEASE的主要内容,如果未能解决你的问题,请参考以下文章
在spring中简单使用Mockito解决Bean依赖树问题
如何使用 Mockito 在 Spring 中模拟自动装配的 @Value 字段?
Mockito 用 Spring 模拟:“传递给 verify() 的参数不是模拟!”
[Mockito] Spring Unit Testing with Mockito