亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
JUnit4如何使用Annotation簡化測試
作者:網絡轉載 發布時間:[ 2016/5/24 13:22:21 ] 推薦標簽:單元測試 軟件測試工具

  JUnit 是Java語言標準單元測試庫。JUnit4 放棄了過去嚴格的命名規范、繼承層次,轉而采用了Java 5 的Annotation機制,從而簡化測試。本文詳細介紹了JUnit4 的基本用法,后續還會針對Matcher、Rule、Theories等主題進行一系列學習總結。
  什么是JUnit?
  JUnit 由XP(極限編程)和TDD(測試驅動開發)的創始人、軟件大師Kent Back以及Eclipse架構師之一、設計模式之父Erich Gamma共同打造。正如『教父』- Martin Fowler 所說,“在軟件開發領域,從來沒有如此少的代碼起到了如此重要的作用”。由于 JUnit,Java 代碼變得更健壯,更可靠,bug 也比以前更少。JUnit(它本身的靈感來自 Smalltalk 的 SUnit)衍生了許多 xUnit 工具,將單元測試的優勢應用于各種語言。nUnit (.NET)、pyUnit (Python)、CppUnit (C++)、dUnit (Delphi) 以及其他工具,影響了各種平臺和語言上的程序員的測試工作。
  什么是Annotation
  Annotation是Java 5 引入的新特性,它為程序元素(類、變量、方法)添加一個說明,這些說明可看做『元數據』,與業務邏輯無關,僅提供給框架分析使用。利用這些『元數據』,框架決定如何使用這些程序元素或改變他們的行為。
  JUnit4 新框架的特點是什么
  JUnit4相比之前版本更輕量,更優雅。它放棄了嚴格的繼承層次、命名規范,選擇了靈活的Java5 Annotation。用 Beck 的話來說,"JUnit 4 的主題是通過進一步簡化 JUnit,鼓勵更多的開發人員編寫更多的測試。"
  JUnit4 基本用法
  1、測試方法
  測試方法必須使用public void修飾
  測試方法不能有參數列表
  測試方法使用@Test修飾
  例如:
  import org.junit.Assert;
  public class AddTest {
  private int x = 1;
  private int y = 1;
  @Test
  public void add() {
  int result = x + y;
  Assert.assertEquals(2, result);
  }
  }
  2、測試固件
  固件通過一個契約來倡導重用,該契約確保特殊邏輯(初始化數據庫、網絡連接、消除資源等)在測試之前或之后運行。
  針對每個測試運行一次固件: @Before @After
  為整個類運行一次固件: @BeforeClass @AfterClass 。它有可能會違反測試的獨立性,并引入非預期的混亂。如果一個測試在某種程度上改變了@BeforeClass所初始化的一個對象,那么會引入順序依賴,有可能會影響其他測試結果,隱藏 bug。
  3、測試套件
  套件用于將測試用例從邏輯上進行分組。在JUnit4中使用兩個新注釋表達套件的語義。
  @RunWith:使用它是為了讓不同的運行器執行特別的測試類。為了運行測試套件,JUnit4綁定了叫做Suite的套件運行器,必須在@RunWith中指定該運行器-@RunWith(Suite.class)
  @SuiteClasses:該注釋需傳入表示測試套件類的列表參數
  4、異常測試
  舊的JUnit異常測試是首先將待測函數放在try塊,然后在try的末尾加入fail語句,后在catch模塊中捕捉該異常。JUnit4是通過編寫拋出異常的代碼,并使用注釋(@Test聲明expected參數)來聲明該異常是預期的,如果該異常沒有拋出,則該測試將失敗。
  @Test(expected=exceptionName.class)
  @Test(expected=ArithmeticException.class)
  public void divideByZero(){
  int result=5/0
  }
  5、性能-時間測試
  性能測試一直都是單元測試的痛點之一,JUnit4沒有完全解決該問題,但是它對性能測試-時間這個問題有所幫助。測試可以用一個超時參數來注釋,如果測試時間超過該超時參數,則測試失敗。
  @Test(time=number),其中number是以ms為單位
  @Test(time=100)
  public void  getContentsFromNet(){
  net.query("abc");
  }
  6、忽略測試
  某些測試用例因為所做的工作比較復雜或者緩慢,例如訪問遠程網絡,因此這些用例運行時間會比較長;又或者某些測試用例因其他原因導致失敗,暫時無法運行。那么這類測試都可以先暫時忽略,等后續再做這類測試。
  @Ignore注釋測試方法,則測試運行器不會運行該測試方法,在測試結果中會顯示本次運行測試pass數、fail數、ignore數。
  7、測試運行器
  JUnit中所有測試方法都是由它均是由測試運行器負責執行,JUnit為單元測試提供了默認的運行器,但是并未限制只能使用默認運行器,也可以通過繼承org.junit.runner.Runner來定制自己的運行器。因此可以為每個測試類指定使用某個特定的測試運行器,指定方法是通過@Runner中顯示指名特定測試運行器。例如測試套件使用@RunWith(Suite.class)。

軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 欧美国产综合在线 | 第四色播日韩第一页 | 最新欧美精品一区二区三区不卡 | 欧美精品一区二区三区免费播放 | 亚洲欧美日韩中文综合在线不卡 | 精品一区一区三区新区乱码 | 黄色一级在线观看 | 国产成人精品午夜二三区 | 成人爱视频| 又黄又爽又色又刺激的视频 | 国产在线日韩在线 | 欧美同性videos可免费 | 涩婷婷| 被男人吃奶很爽的毛片两男一女 | 欧美精品xxxtv | 成人小视频在线观看 | 亚洲一级免费毛片 | a免费国产一级特黄aa大 | 免费三级网址 | 99精品日韩| 欧美成人三级一区二区在线观看 | 亚洲精品视频专区 | 日日碰日日摸日日澡视频播放 | 日韩欧美精品在线 | 欧美久在线观看在线观看 | 亚洲视频日韩视频 | 一区二区精品视频 | 国产一区二区在线看 | 欧美18videosex性极品 | 最近中文字幕完整在线看一 | 看特级毛片| 国产一在线观看 | 蜜桃视频成a人v在线 | 中国成熟xxx视频 | 五月婷婷色 | 精品乱人伦一区二区 | 成年人小视频在线观看 | 欧美video巨大粗暴多人 | 老司机午夜视频在线观看 | 天天插天天射天天干 | 久久久久国产精品免费看 |