当我运行测试用例时,我得到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());
}
}
答案 0 :(得分:1)
您需要在测试类中初始化带注释的模拟。
@BeforeMethod
public void beforeClass() {
MockitoAnnotations.initMocks(this);
}
答案 1 :(得分:0)
为什么你会关心mock(AnObj)中的内容?我假设您还没有使用Mockito.when声明该模拟的互动。
答案 2 :(得分:0)
如@Valya所述,这一点是有效的。我不应该嘲笑那个。我需要自动装配'AnObj'。非常感谢所有的帮助。它产生了不同。