2013-06-14 23 views
5

İki nesneyi parametre olarak alan ve boolean değerini döndüren bir yöntemi test ediyorum. Söz konusu yöntemle assertTrue veya assertFalse kullandığımda, aşağıdaki sınama hatasını alıyorum: junit.framework.AssertionFailedError: null.AssertionFailedError: null boolean yönteminde

Geçersiz parametrelerden geçtiğimi biliyorum ve yöntemde büyük olasılıkla NPE neden oluyordur, ancak ne olduğu değil, test başarısız oluyor.

Not: boolean kullanıyorum ve Boolean kullanmıyorum.

Örnek Kod:

Sınıf:

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

Testi:

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

Gördüğünüz hata, 'foo' false'ı döndürdüğünde normaldir. Bu, muhtemelen bir NPE'yi beklediğiniz gibi atmaması gerektiği anlamına gelir. Bu arada, JUnit 4'ü kullanıyorsunuz ('@ Test' ifadesi nedeniyle) ama hala eski JUnit 3 'Assert' sınıfını (junit.framework paketinin) kullanıyorsunuz. – LaurentG

+0

İçinde bir nullpointer ile karşılaşmadığınızı düşünüyorum, bunu asserTrue dışındaki yöntemi çalıştırarak test edebilirsiniz. Bana sonucu söyleyeyim. – Vegard

+0

'null',' assertTrue' yöntemine vermediğiniz bir iletidir. http://junit.sourceforge.net/javadoc/org/junit/Assert.html#assertTrue(boolean) –

cevap

9

"null" boş mesaj parametresi olan bir JUnit 3 assert (junit.framework.Assert) içerisinde mesaj olarak gösterir . Bu JUnit 4'te (org.junit.Assert) giderilmiştir.

Örnek:

JUnit 3:

assertTrue(false)assertTrue("null", false)

JUnit aynı yığın izleme sahip 4:

assertTrue(false) aynı yığın izleme sahip