我正在测试一个类中的方法。这是一个抽象类的方法。
例如:
class abstract Abstract {
public ReturnObject abstractMethod(SomeObject value) {
// do something
return returnObject;
}
}
class Concreate extends Abstract {
public ReturnObject concreteMethod(SomeObject value) {
//do something
returnObject = abstractMethod(value);
return returnObject;
}
}
My UT is
class ConcreateTest {
@InjectMocks
private Concreate conctrete;
@Mock
private Concreate conctrete2;
@Test
public void test_method() {
when(conctrete2.abstractMethod(value)).thenReturn(returnObject);
conctrete.concreteMethod(value);
}
}
这样它就会返回NullPointerException。
答案 0 :(得分:0)
从你所展示的内容来看,我很少看到你的代码确定发生了什么,但我看到的一件事是你嘲笑一个Concreate然后将那个模拟注入另一个Concreate。我在代码中看不到任何告诉我Concreate使用另一个注入的Concreate的代码。这基本上只是伪代码。所以基本上我假设您的主要Concreate正在应用程序上下文中注入,而您的其他Concreate正在第一个注入。
你需要@Named来解决这种歧义,或者更一般地说,你必须给你的豆子个人名字,即使他们被嘲笑。