我有A类,它依赖于B类。B类再次依赖于C类,结构如下所示:
Class A(){
@Autowired
private B b;
public void someMethod(){
b.callAnotherMethodAndGetValue();
}
}
Class B(){
@Autowired
private C c;
public void callAnotherMethodAndGetValue(){
c.callAnother();
}
}
Class ATest(){
@Spy
private B b;
public void someMethod(){
// it goes into this method, and throws null pointer exception at
// c.callAnother(); as c is null.
b.callAnotherMethodAndGetValue();
}
}
有什么方法可以让堆栈从测试用例流向c.callAnother
。没有做的时候在b.callAnotherMethodAndGetValue();
你需要嘲笑 C: 而不是监视 b:
@Mock
C c;
@InjectMocks
B b;
@Test
public void someMethod(){
b.callAnotherMethodAndGetValue();
}
因为如果你使用构造函数注入,你会让你的生活更轻松!
我正在为 A 类编写测试用例。 对于 A 类的内部测试,我应该做 A @InjectMocks A 并且应该做
a.someMethod()
– 乔蒂·亚达夫
然后测试应如下所示:
@Mock
B b;
@InjectMocks
A a;
@Test
public void someMethod(){
a.someMethod();
}