我正在尝试测试 aclass A反过来自动装配 a class B:
public class A {
@Autowired
private B b;
public int foo(int x, int y) {
int z = b.bar(x, y, false);
//do something with z
return z;
}
}
我将 junit 与 and 一起使用powermock并mockito尝试foo在class A.
@RunWith(PowerMockRunner.class)
@PrepareForTest(A.class)
public class TestA {
@Test
private void testFoo() {
B b = PowerMockito.mock(B.class);
when(b.bar(2,3,false)).thenReturn(5);
A a = PowerMockito.spy(new A());
Whitebox.setInternalState(a, "b", b);
int z = a.foo(2,3);
Assert.assertEquals(10,z);
}
}
当我尝试运行测试时,我NullPointerException从内部得到一个class B. 使用调试器后,我发现在 stub 的bar方法之后B class,该bar方法被调用。这种情况下出现空指针异常是正常的,因为B类没有正确初始化。
谁能解释为什么会发生这种情况以及我能做些什么。