2016-05-13 1 views
-3

Ich teste eine Methode in einer Klasse. Das ruft eine Methode der abstrakten Klasse auf.Beim Aufrufen der abstrakten Methode aus der konkreten Klasse werfen NullPointerException

ZB:

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); 
    } 

} 

diese Weise ist es mir Zu.

+1

Sie haben nicht minimalen Code hinzugefügt, der kompiliert werden könnte? Wenn wir Ihren Code sehen, können wir Ihnen nicht weiterhelfen und fügen auch eine Fehlerverfolgung hinzu. um eine schnelle Lösung zu bekommen. – Ali786

+1

@FaizAli Es tut mir leid, dass ich deine Bearbeitung aus Versehen zurückgewiesen habe, weil ich dachte, dass du die Leerzeichen entfernst, dafür entschuldige ich mich. Aber es wird genehmigt, keine Sorge. –

Antwort

0

Von dem, was Sie zeigen, sehe ich sehr wenig von Ihrem Code, um sicher zu sagen, was vor sich geht, aber eine Sache, die ich sehe, ist, dass Sie einen Concreate verspotten und dann diesen Schein in einen anderen Concreate injizieren. Ich sehe nicht in dem Code, den du irgendwo zeigst, der mir sagt, dass ein Concreate ein anderes injiziertes Concreate verwendet. Dies ist im Wesentlichen nur Pseudo-Code. Also im Wesentlichen gehe ich davon aus, dass Ihr Hauptbeton in einen Anwendungskontext injiziert wird und dass Ihr anderes Konkreat in den ersten injiziert wird.

Sie müssen @named, um diese Mehrdeutigkeit zu lösen, oder generischer gesprochen müssen Sie Ihren Beans einen individuellen Namen geben, auch wenn sie verspottet werden.

Verwandte Themen