2013-06-14 29 views
5

Tôi đang thử nghiệm một phương thức lấy hai đối tượng làm tham số và trả về một boolean. Khi tôi sử dụng và assertTrue hoặc assertFalse trên phương pháp được đề cập, tôi nhận được lỗi kiểm tra sau: junit.framework.AssertionFailedError: null.AssertionFailedError: null trên phương thức boolean

Tôi biết rằng tôi đang chuyển các tham số không hợp lệ và có khả năng sẽ gây ra một số NPE trong phương pháp nhưng đó không phải là điều đang xảy ra, thay vào đó thử nghiệm không thành công.

Lưu ý: Tôi đang sử dụng boolean và không phải Boolean.

Mã mẫu:

Class:

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

Lỗi bạn thấy là bình thường nếu phương thức 'foo' trả về' false'. Điều đó có nghĩa rằng nó có lẽ không nên ném một NPE như mong đợi của bạn. Nhân tiện, bạn đang sử dụng JUnit 4 (vì chú thích '@ Test') nhưng bạn vẫn sử dụng lớp JUnit 3' Assert' cũ (của gói junit.framework). – LaurentG

+0

Tôi nghĩ rằng bạn đã không gặp phải một nullpointer bên trong, bạn có thể kiểm tra điều này bằng cách chạy phương thức bên ngoài asserTrue. Hãy cho tôi biết kết quả. – Vegard

+0

'null' là thông điệp bạn không đưa ra cho phương thức' assertTrue'. http://junit.sourceforge.net/javadoc/org/junit/Assert.html#assertTrue (boolean) –

Trả lời

9

"null" xuất hiện như thông điệp trong một assert JUnit 3 (junit.framework.Assert) với một tham số thông điệp trống . Điều này đã được sửa trong JUnit 4 (org.junit.Assert).

Ví dụ:

JUnit 3:

assertTrue(false) có vết đống giống như assertTrue("null", false)

JUnit 4:

assertTrue(false) có vết đống giống như

Các vấn đề liên quan