2016-09-21 45 views
0

Iam使用mockito执行测试,并且IAM对它非常新。 Iam在Mockito方法和Onmessage方法中使用声明的对象/变量获取空指针异常。 代码片段如下。Mockito方法为使用的变量抛出空指针异常

类A.java

 Class A{ 

     @Inject 
     CheckConnection connection; 

     public void onMessage(Message m) 
     { 
      if(connection.IsInternetavailable==true) //Null pointer is occuring here 
      { 
       //Do something with Message 
      } 
      else 
      { 
       //Do something with Message 
      } 
     } 
     } 

类Atest.java-类的Mockito

 Class ATest 
     { 

     @InjectMocks 
     A resource; 

     @Mock 
      CheckConnection connection; 

     @Test 
      public void shouldProcessMessage() throws JMSException { 
       // Arrange 
       final String Type = "MessageType"; 
       final String Body = "MessageBody" 

       final ActiveMQTextMessage message = new ActiveMQTextMessage(); 
       message.setStringProperty("messageType", Type); 
       message.setText(Body); 

       // Act 
       this.resource.onMessage(message); //This method fails i.e. it gives null pointer exception 
      } 
     } 
+2

呃...你可以从你正在使用的确切代码开始。你的代码片段不合适:'CheckConnection!= CheckInternetConnection'和'onMessage!= OnMessage'。另外,如果你有一个模拟,它不会自动注入到被测对象中。 – Seelenvirtuose

+0

我已经纠正它,现在我认为这总结了它 –

+0

什么是'this.resource'?如果您只是保留程序的重要部分,我们怎么可能帮助您? – Seelenvirtuose

回答

1

第一:注释是InjectMocks不InjectMock 小号丢失

第二:你需要初始化ialize嘲笑这个电话MockitoAnnotations.initMocks(this);这应该在你的设置方法或第一次调用你的测试方法。