从具体类调用抽象方法时引发NullPointerException



我正在测试一个类中的方法。它正在调用抽象类的方法。

例如:

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。

从您所展示的内容来看,我几乎看不到您的代码,无法确定发生了什么,但我看到的一件事是,您正在模拟一个Concreate,然后将该模拟注入另一个Conccreate。在您显示的代码中,我没有看到告诉我一个Concreate使用另一个注入的Concreate。这本质上只是伪代码。因此,本质上,我假设您的主Concreate被注入到应用程序上下文中,而您的另一个Concreate则被注入到第一个上下文中。

你需要@Named来解决这个歧义,或者更一般地说,你必须给你的bean一个单独的名字,即使它们被嘲笑。

相关内容

  • 没有找到相关文章

最新更新