2013-06-28 234 views
2

assert(false);是一種可接受的方式導致測試失敗?導致TestNG測試失敗?

此外,應我甚至會導致如果NoSuchMethodException拋出:SecurityException被拋出試圖訪問類的私有方法,或者我應該只是打印異常的堆棧跟蹤TestNG的測試失敗?

@Test 
public void getLevelTest() { 
    try { 
     menu.getClass().getDeclaredMethod("getLevel",int.class,String.class); 
    } catch (NoSuchMethodException | SecurityException e) { 
     assert(false); 
    } 
} 

回答

2

在這種情況下,使用assert(false)表示您丟失了有關拋出異常的信息。 TestNG不知道這個異常與測試失敗有關。

你不應該需要任何斷言或捕捉到任何:

@Test 
public void getLevelTest() throws Exception { 
     menu.getClass().getDeclaredMethod("getLevel",int.class,String.class); 
} 

測試框架將捕獲異常,並在測試結果打印堆棧跟蹤。

3

另一種方式在TestNG的框架來處理預期的例外是:

@Test(expectedExceptions = {NoSuchMethodException.class, SecurityException.class}) 

如果這個標註的測試遇到任何異常的,將被視爲合格。

2

使用assertTrue()assertFalse(),在此topis上也可以看到old answer

相關問題