JUnit4 學習筆記

来源:http://www.cnblogs.com/ShawnYang/archive/2017/03/25/6617392.html
-Advertisement-
Play Games

一、環境搭建: 1、需要用的包: JUnit4.7:http://files.cnblogs.com/files/ShawnYang/junit4.7.zip hamcrest-1.2:http://files.cnblogs.com/files/ShawnYang/hamcrest-1.2.zip ...


一、環境搭建:

1、需要用的包:

  JUnit4.7:http://files.cnblogs.com/files/ShawnYang/junit4.7.zip

  hamcrest-1.2:http://files.cnblogs.com/files/ShawnYang/hamcrest-1.2.zip

需要導入的jar包:

2、需要註意的是,將JUnit包加入項目中之後,就不要使用eclipse自帶的JUnit Library了。如果使用eclispe自帶的JUnit包,又加上從外部引入的 hamcrest 包,那麼在調試 test case 的時候會出現 classloader 相關的異常。所以要統一從外部引入。

 

二、什麼是單元測試

寫了個類,要給別人用,會不會有bug?怎麼辦?測試一下。
用 main 方法測試好不好?不好!
1、不能一起運行,也就是不能一次測試多個方法!
JUnit可以選中類測試所有方法,也可以選中方法,測試單個方法,要靈活一些。
2、大多數情況下需要人為的觀察輸出確定是否正確。

JUnit 只需要滑鼠選中整個類的測試方法 run as JUnit Test,如果bar為綠就說明整個類的所有方法測試通過了。

三、為什麼要進行單元測試
重用測試,應付將來的實現的變化;
提高自信心,明確知道自己的東西是沒問題的。

JUnit4 HelloWorld
1、new project
2、建立類
3、建立 testcase

四、放棄舊的斷言,使用 hamcrest 斷言
1、assertThat
2、使用 hamcrest 的匹配方法
a) 更自然
3、示例
a) assertThat(n,allOf(greaterThan(1),lessThan(15)));
assertThat(n,anyOf(greaterThan(16),lessThan(8)));
assertThat(n,anything());
assertThat(str,is("shawn"));
assertThat(str,not("shawn"));

b) assertThat(str,containsString("shawn"));
assertThat(str,endWith("shawn"));
assertThat(str,startWith("shawn"));
assertThat(n,equalTo(nExpected));
assertThat(str,equalToIgnoringCase("developerWorks"));
assertThat(str,equalToIgnoringWhiteSpace("developerWorks"));

c) assertThat(d,closeTo(3.0,0.3));
assertThat(d,greaterThan(3.0));
assertThat(d,lessThan(10.0));
assertThat(d,greaterThanOrEqualTo(5.0));
assertThat(d,lessThanOrEqualTo(16.0));

d) assertThat(map,hasEntry("shawn","shawn"));
assertThat(iterabel,hasItem("shawn"));
assertThat(map,hasKey("shawn"));
assertThat(map,hasValue("shawn"));

五、Failure和Error
1、Failure是指測試失敗
2、Error是指測試程式本身出錯

註意:有Error 就不會再去找Failure了。

六、JUnit4 Annotation
1、@Test:測試方法
a) (expected=XXException.class)
b) (timeout=xxx)
2、@Ignore:被忽略的測試方法
3、@Before:每一個測試方法之前運行
4、@After:每一個測試方法之後運行
5、@BeforeClass:所有測試開始之前運行
6、@AfterClass:所有測試結束之後運行

運行多個測試
右鍵點擊測試類:run as JUnit Test

最後註意
1、遵守約定,比如
a) 類放在test包中;
b) 類名用 XXXTest結尾;
c) 方法用 testXXXMehtod 命名。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 轉自:http://blog.csdn.net/wushiwude/article/details/55101631 一、前言 dubbo的使用,其實只需要有註冊中心,消費者,提供者這三個就可以使用了,但是並不能看到有哪些消費者和提供者,為了更好的調試,發現問題,解決問題,因此引入dubbo-adm ...
  • 從一開始就讓我們簡化這次的討論。你有兩類你能夠繼承的函數:虛函數和非虛函數。然而,重新定義一個非虛函數總是錯誤的(Item 36),所以我們可以安全的把這個條款的討論限定在繼承帶預設參數值的虛函數上。 1. 虛函數是動態綁定的,而預設參數是靜態綁定的 在這種情況下,這個條款的驗證就相當直接了:虛函數 ...
  • Restful是一種架構style,目前常說的有restful web service, resultful http。現在熱搜榜的微服務,大多數會採用Restful方式。 JAX-RS 作為一個Restful 風格WebService規範,目前已發展到了2.0版本,目前比較常用的兩個版本是JAX- ...
  • 用戶與訂單時一對多關係,再加上商品信息的話,訂單與商品之間就是多對多關係了 sql DROP DATABASE IF EXISTS testdb; USE testdb; / 用戶表,記錄用戶信息;用戶與訂單為一對多關係:一個用戶可擁有多個訂單 / DROP TABLE IF EXISTS ; CR ...
  • 緣起 因為一個月的短暫停留,我在給朋友搞事情,所以Yii系列的文章耽擱了很長時間,現在又重拾當時的知識,給大伙好好擼下這一系列的博客 提起Yii,雖然是國外的開發者搞的,但是它的作者是華人,這才是讓我們引以為豪的,如果以後有機會薛強回國大力發展PHP事業,我肯定回去他麾下搞事情,為PHP在國內的發展 ...
  • (一)Eclipse中的快捷鍵: ctrl+shift+f自動整理選擇的java代碼 alt+/ 生成無參構造器或者提升信息 alt+shift+s+o 生成帶參構造 ctrl+shift+o快速導入包 alt+shift+s+r tab+enter-->shift+tab+enter 快速生成ge ...
  • http://jingyan.baidu.com/article/e8cdb32b420ce737052badc4.html ...
  • JAVA 類總結 最近看了遍java內部類相關的一些內容,做一些總結。與個人博客 zhiheng.me 同步發佈,標題: JAVA 類總結。 頂級類與嵌套類 定義在某個類(或介面,下同)內部的類,稱為嵌套類(nested class),相應的,其所在的類稱之為該類的外圍類(enclosing cla ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...