我正在尝试测试 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类没有正确初始化。
谁能解释为什么会发生这种情况以及我能做些什么。