2012-10-17 23 views
14

Khi cố tình thất bại một trường hợp thử nghiệm (ví dụ khi một ngoại lệ không được ném) Tôi đã thấy mọi người sử dụng cả fail() và assertTrue (false). Có lợi thế nào khi sử dụng cái này hay cái kia không? expected tham sốThực tiễn tốt nhất: fail() vs assertTrue (false)

try { 
    //method call that should throw exception 
    fail("oops"); 
} catch (Exception e) {} 

vs

try { 
    //method call that should throw exception 
    assertTrue("oops", false); 
} catch (Exception e) {} 
+0

Tại sao bạn muốn thử nghiệm không thành công? – Victor

+4

Khi một ngoại lệ phải được ném nhưng không phải. Bạn không đồng ý với các ví dụ của tôi? – TrevorBliss

+0

Ngoại lệ phải là ngoại lệ. Một mã tốt không bao giờ nên mong đợi một ngoại lệ, mã của bạn nên tránh ngoại lệ trước khi nó được ném. – Victor

Trả lời

20

Có lợi thế nào khi sử dụng cái này hay cách khác không?

Chức năng, không. Tuy nhiên, fail() truyền đạt ý định rõ ràng hơn và do đó tốt hơn.

13

Sử dụng JUnit trong các @Test chú thích

@Test(expected = ArithmeticException.class) 
public void divisionWithException() { 
    int i = 1/0; 
} 

này sẽ thất bại nếu một ArithmeticException không ném.

+2

OP không nói "ví dụ, khi một ngoại lệ không được ném" Có thể có các tình huống khác. – NullUserException

+3

Tôi đã thấy rằng quy tắc 'EpectedException' là một cơ chế mạnh mẽ hơn để kiểm tra các ngoại lệ được mong đợi bởi vì nó có thể được đặt ngay trước khi phương thức được thử nghiệm, do đó đảm bảo nó không phải là thiết lập thử nghiệm đã ném một ngoại lệ. –

+1

Nhưng chúng tôi đang mong đợi một ngoại lệ để được ném. Vì vậy, nếu nó không nên thất bại. Tại sao phải bận tâm với try/catch logic? Chúng tôi muốn ngoại lệ. – BeRecursive

5

assertTrue chỉ thực hiện cuộc gọi.

Lỗi IMHO() đơn giản và rõ ràng hơn.

1

Cả hai có thể được sử dụng (mặc dù fail là tốt hơn bởi vì đó là những gì thực sự là dự định), nhưng vì bạn đang sử dụng JUnit, bạn có thể sử dụng @Test(expected=MyException.class) thay thế.

1

Sử dụng fail, nếu không ai đó sẽ xem lỗi thất bại trong nhật ký và nghĩ "Điều gì là sai phải đúng".

+0

"Điều gì sai phải đúng?" :-D – asgs

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