模拟作为模拟对象

时间:2017-06-07 09:17:23

标签: spring mockito testng

当我运行测试用例时,我得到AnObj嘲笑。这是从目标类方法中使用的。当该方法被调用时,' anOtherObj'被访问,发现是null。有人可以指出如何确保&an ;OtherObj'是不是因为我不在那里得到nullpointer?

    @Test
    public class TestTargetTest {

    @Mock
    private AnObj anObj;

    @InjectMocks
    private TestTarget testTarget;

    @BeforeMethod
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void testTarget() {

        when(anObj.someMethod()).thenCallRealMethod();

        testTarget.testTarget();



    }

}

@Component
public class TestTarget {

    @Autowired
    private AnObj anObj;

    public void testTarget(){

        anObj.someMethod();
    }
}

@Component
public class AnObj {

    @Autowired
    private AnOtherObj anOtherObj;

    public void someMethod(){
        syso(anOtherObj.toString());
    }
}

3 个答案:

答案 0 :(得分:1)

您需要在测试类中初始化带注释的模拟。

@BeforeMethod
public void beforeClass() {
    MockitoAnnotations.initMocks(this);
}

答案 1 :(得分:0)

为什么你会关心mock(AnObj)中的内容?我假设您还没有使用Mockito.when声明该模拟的互动。

答案 2 :(得分:0)

如@Valya所述,这一点是有效的。我不应该嘲笑那个。我需要自动装配'AnObj'。非常感谢所有的帮助。它产生了不同。