2013-06-14 11 views
5

Ich teste eine Methode, die zwei Objekte als Parameter akzeptiert und eine boolean zurückgibt. Wenn ich und assertTrue oder assertFalse auf der fraglichen Methode verwende, bekomme ich den folgenden Testfehler: junit.framework.AssertionFailedError: null.AssertionFailedError: null auf boolescher Methode

Ich weiß, dass ich ungültige Parameter übergebe und wahrscheinlich eine NPE innerhalb der Methode verursacht, aber das ist nicht, was passiert, stattdessen ist der Test fehlgeschlagen.

Hinweis: Ich verwende boolean und nicht Boolean.

Beispielcode:

Klasse:

public class MyClass{ 
    public boolean foo(MyObject1 lhs, MyObject2 rhs){ 
    //doSomething 
    //return something 
    } 
} 

Test:

.... //initilization of myClass, etc. 
@Test 
public void testFoo(){ 
    assertTrue(myClass.foo(new MyObject1(), new MyObject2()); 
} 
+1

Der angezeigte Fehler ist normal, wenn die Methode 'foo'' false' zurückgibt. Das bedeutet, dass es wahrscheinlich keine NPE wie erwartet werfen sollte. Übrigens benutzen Sie JUnit 4 (wegen der Annotation '@ Test'), aber Sie verwenden immer noch die alte JUnit 3' Assert' Klasse (des Pakets junit.framework). – LaurentG

+0

Ich glaube, Sie haben keinen Nullzeiger innerhalb gefunden. Sie können dies testen, indem Sie die Methode außerhalb von asserTrue ausführen. Lass mich das Ergebnis wissen. – Vegard

+0

Die 'Null' ist die Nachricht, die Sie der 'assertTrue'-Methode nicht gegeben haben. http://junit.sourceforge.net/javadoc/org/junit/Assert.html#assertTrue(boolean) –

Antwort

9

"null" zeigt sich als die Nachricht in einer JUnit 3 assert (junit.framework.Assert) mit einem leeren Nachrichtenparameter . Dies wurde in JUnit 4 (org.junit.Assert) behoben.

Beispiel:

JUnit 3:

assertTrue(false) hat die gleiche Stapelüberwachung als assertTrue("null", false)

JUnit 4:

assertTrue(false) hat die gleiche Stapelüberwachung als