2013-06-14 10 views
5

Testuję metodę, która pobiera dwa obiekty jako parametry i zwraca wartość boolean. Kiedy używam i assertTrue lub assertFalse dla tej metody, otrzymuję następującą niepowodzenie testu: junit.framework.AssertionFailedError: null.AssertionFailedError: null na boolowskiej metodzie

Wiem, że przekazuję niepoprawne parametry i prawdopodobnie spowoduje to, że w metodzie będzie NPE, ale to nie jest to, co się dzieje, zamiast tego test się nie udaje. Uwaga: Używam boolean, a nie Boolean.

Przykładowy kod:

Klasa:

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

Błąd, który widzisz, jest normalny, jeśli metoda 'foo' zwraca' fałsz'. Oznacza to, że prawdopodobnie nie powinien wyrzucać NPE zgodnie z oczekiwaniami. Nawiasem mówiąc, używasz JUnit 4 (z powodu adnotacji '@ Test'), ale nadal używasz starej klasy JUnit 3' Assert' (pakietu junit.framework). – LaurentG

+0

Myślę, że nie spotkałeś nullpointer wewnątrz, możesz to sprawdzić, uruchamiając metodę poza asserTrue. Daj mi znać wynik. – Vegard

+0

"Null" to komunikat, którego nie podano do metody "assertTrue". http://junit.sourceforge.net/javadoc/org/junit/Assert.html#assertTrue(boolean) –

Odpowiedz

9

"null" pojawia się jako komunikat w JUnit 3 assert (junit.framework.Assert) z pustym parametrem wiadomości . Zostało to naprawione w JUnit 4 (org.junit.Assert).

przykład:

JUnit 3:

assertTrue(false) ten sam ślad stosu jako assertTrue("null", false)

JUnit 4:

assertTrue(false) ten sam ślad stosu jako