2013-06-14 2 views
5

Я тестирую метод, который принимает два объекта в качестве параметров и возвращает boolean. Когда я использую и assertTrue или assertFalse по рассматриваемому методу, я получаю следующий сбой теста: junit.framework.AssertionFailedError: null.AssertionFailedError: null on boolean method

Я знаю, что передаю недействительные параметры и, вероятно, вызову NPE в этом методе, но это не то, что происходит, вместо этого тест терпит неудачу.

Примечание: Я использую boolean, а не Boolean.

Пример кода:

Класс:

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

Тест:

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

Ошибка, которую вы видите, является нормальной, если метод 'foo' возвращает' false'. Это означает, что он, вероятно, не должен бросать NPE в ожидании. Кстати, вы используете JUnit 4 (из-за аннотации '@ Test'), но вы по-прежнему используете старый класс JUnit 3' Assert' (пакет junit.framework). – LaurentG

+0

Я думаю, вы не столкнулись с nullpointer внутри, вы можете проверить это, запустив метод вне asserTrue. Дайте мне знать результат. – Vegard

+0

«null» - это сообщение, которое вы не дали методу 'assertTrue'. http://junit.sourceforge.net/javadoc/org/junit/Assert.html#assertTrue(boolean) –

ответ

9

"null" показывает, как сообщение в JUnit 3 утверждают (junit.framework.Assert) с пустым параметром сообщения , Это было исправлено в JUnit 4 (org.junit.Assert).

Пример:

JUnit 3:

assertTrue(false) имеет тот же трассировки стека как assertTrue("null", false)

JUnit 4:

assertTrue(false) имеет тот же трассировки стека как