您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
Junit測試預(yù)期異常
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2014/9/30 13:48:48 ] 推薦標(biāo)簽:Junit 測試 開源軟件測試

  除了可以設(shè)置異常的屬性信息之外,這種方法還有一個優(yōu)點,它可以更加精確的找到異常拋出的位置。在上面的例子中,在構(gòu)造函數(shù)中拋出的未預(yù)期的(unexpected) IllegalArgumentException 異常將會引起測試失敗,我們希望它在canVote()方法中拋出。
  從另一個方面來說,如果不需要聲明更好了
  @Rule
  public ExpectedException thrown= ExpectedException.none();
  它像不需要的噪音一樣,如果這樣很好了
  expect(RuntimeException.class)
  或者:
  expect(RuntimeException.class, “Expected exception message”)
  或者至少可以將異常和信息當(dāng)做參數(shù)傳進(jìn)去
  thrown.expect(IllegalArgumentException.class, “age should be +ve”);
  3.Try/catch with assert/fail
  在JUnit4之前的版本中,使用try/catch語句塊檢查異常
@Test
public void canVote_throws_IllegalArgumentException_for_zero_age() {
Student student = new Student();
try {
student.canVote(0);
} catch (IllegalArgumentException ex) {
assertThat(ex.getMessage(), containsString("age should be +ve"));
}
fail("expected IllegalArgumentException for non +ve age");
}
  盡管這種方式很老了,不過還是非常有效的。主要的缺點是很容易忘記在catch語句塊之后需要寫fail()方法,如果預(yù)期異常沒有拋出會導(dǎo)致信息的誤報。我曾經(jīng)犯過這樣的錯誤。
  總之,這三種方法都可以測試預(yù)期拋出的異常,各有優(yōu)缺點。對于我個人而言,我會選擇第二種方法,因為它可以非常精確、高效的測試異常信息。

上一頁12下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd