Mockito的@InjectMock注释

时间:2011-09-22 19:35:01

标签: bdd mockito

我对@RunWith(MockitoJUnitRunner.class)@InjectMock注释以及它们彼此之间的关系有点困惑。根据我的理解,通过提供@RunWith(MockitoJUnitRunner.class),我们不需要像mock(ABC.class)那样初始化模拟。

另一方面,@InjectMocks使用getter和setter自动注入模拟。文档说:

  

@InjectMocks目前它只支持setter注入。如果您更喜欢构造函数注入 - 请提供补丁....

我不明白的是,当我删除下面的@InjectMocks时,我会得到测试的nullpointer异常,因为依赖项为null。这是否意味着支持基于construtor的注入?或者它与@RunWith(MockitoJUnitRunner.class)

有关

这是代码

@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {
    @Mock
    private Dependency dependency;

    @InjectMocks
    private MyClass cls = new MyClass(dependency);
    //...
}

class MyClass {
    private Dependency dependency;

    MyClass(Dependency dependency) {
        this.dependency = dependency;
    }
    //...
}

1 个答案:

答案 0 :(得分:1)

截至最新版本Mockito supports constructor injection

查看最新的javadoc