2016-09-21 2 views
0

Ich benutze Mockito, um Tests durchzuführen und iam sehr viel Neues dazu. Ich erhalte eine Nullzeiger-Ausnahme in der Mockito-Methode und in der Onmessage-Methode für die Verwendung eines deklarierten Objekts/einer Variablen. Das Code-Snippet ist wie folgt.Mockito Methode Null Zeiger Ausnahme für Variable

Klasse 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 
      } 
     } 
     } 

Klasse Atest.java-Mockito Klasse

 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

Nun ... Sie könnten mit dem genauen Code beginnen, den Sie verwenden. Ihre Code-Snippets passen nicht zusammen: 'CheckConnection! = CheckInternetConnection' und' onMessage! = OnMessage'. Wenn Sie einen Schein haben, injiziert es sich nicht automatisch in das zu testende Objekt. – Seelenvirtuose

+0

ich habe es jetzt korrigiert ich denke, das fasst es zusammen –

+0

Und was ist 'this.resource'? Wie können wir Ihnen möglicherweise helfen, wenn Sie wesentliche Teile Ihres Programms einfach zurückhalten? – Seelenvirtuose

Antwort

1

Erstens: Die Anmerkung ist InjectMocks InjectMock nicht s fehlt

Zweitens: Sie müssen init Iialize die Mocks mit diesem Anruf MockitoAnnotations.initMocks(this);, die in Ihrer Methode oder ersten Aufruf in Ihrer Testmethode sein sollte.