在模拟对象中调用对象属性的方法会导致NullPointerException

时间:2015-08-13 10:08:28

标签: java unit-testing mockito

我有以下情况:

public class MyObject {
    ObjectA a;

    public void method(){
        a.getObjectB.getSomething();
}

现在在我的JUnit测试中我嘲笑(使用mockito)并注入ObjectA,我的问题是即使在我尝试通过反射注入ObjectB之后,getObjectB也保持为null。我有什么想法可以解决这个问题吗?

单元测试如下:

@Mock ObjectA a

@Mock ObjectB b

MyObject c

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        c = new MyObject();
        MyObject.setObjectA(a);
        ReflectionTestUtils.setField(c, "b", b);
        when(stepExecution.getObjectB().getSomething()).thenReturn("Stuff);
}

@Test
public void testSomething()
{
    c.myMethod() 
}

1 个答案:

答案 0 :(得分:0)

模拟对象ObjectA& ObjectB并根据您的需要设定他们的期望。

when(a.getObjectB()).thenReturn(b); 
when(b.getSomething()).thenReturn("Stuff");