从具体类中调用抽象方法时抛出NullPointerException

时间:2016-05-13 04:14:56

标签: spring mockito

我正在测试一个类中的方法。这是一个抽象类的方法。

例如:

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。

1 个答案:

答案 0 :(得分:0)

从你所展示的内容来看,我很少看到你的代码确定发生了什么,但我看到的一件事是你嘲笑一个Concreate然后将那个模拟注入另一个Concreate。我在代码中看不到任何告诉我Concreate使用另一个注入的Concreate的代码。这基本上只是伪代码。所以基本上我假设您的主要Concreate正在应用程序上下文中注入,而您的其他Concreate正在第一个注入。

你需要@Named来解决这种歧义,或者更一般地说,你必须给你的豆子个人名字,即使他们被嘲笑。

相关问题