我有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();
答案 0 :(得分:5)
你需要在b:
上模仿C:和不间谍@Mock
C c;
@InjectMocks
B b;
@Test
public void someMethod(){
b.callAnotherMethodAndGetValue();
}
关闭,如果你使用构造函数注入,你会让生活更轻松!
我正在编写A类测试用例。对于A类内部测试,我应该做@InjectMocks A a并且应该做
a.someMethod()
- Jyoti Yadav
然后测试应该是这样的:
@Mock
B b;
@InjectMocks
A a;
@Test
public void someMethod(){
a.someMethod();
}