單元測試教程(二):Assert驗證的重寫
new verifyAssert().verifyEquals(result, 2, remark, “com.bjcj.OS.JB”, “testJBu”, “testJuBu2”);
這句程式碼是做什麼的呢?其實是重新封裝了assert斷言
import static org.junit.Assert.*;
import com.bjcj.excel.ExcelJunitReport;
/**
* @author wenfang zhang Tester
* 2016 2016-11-11 下午02:29:17
* 重新封裝assert斷言
*/
public class verifyAssert {
ExcelJunitReport report = new ExcelJunitReport();
/**
*
* @param actual : 實際得到的結果
* @param except :預期的結果
* @param remark :該測試用例的備註
* @param packageName : 測試用例所在的包名
* @param className :測試用例所在的類名
* @param methodName : 測試用例所在的方法名
*/
//比較結果為String型別
public void verifyEquals(String actual ,String except,String remark,String packageName,String className,String methodName){
boolean flag = true ;
String reason = "";
try{
assertEquals(actual,except);
}catch(java.lang.AssertionError e){
reason = e.toString();
flag = false ;
System.out.println(e.toString());
}
if(flag){
report.writeExcel(packageName,className,methodName,remark,"success",reason);
}else{
report.writeExcel(packageName,className,methodName,remark,"fail",reason);
}
}
//比較結果為int型別
public void verifyEquals(int actual ,int except,String remark,String packageName,String className,String methodName){
boolean flag = true ;
String reason = "";
try{
assertEquals(actual,except);
}catch(java.lang.AssertionError e){
reason = e.toString();
flag = false ;
}
if(flag){
report.writeExcel(packageName,className,methodName,remark,"success",reason);
}else{
report.writeExcel(packageName,className,methodName,remark,"fail",reason);
}
}
}
大家是不是有一個疑問呢?junit已經提供了assert驗證方法,為什麼還要封裝呢?
try{
assertEquals(actual,except);
}catch(java.lang.AssertionError e){
reason = e.toString();
flag = false ;
}
看程式碼,我們在assertEquals方法之外,加上了 try …..catch,如果驗證失敗,我們對錯誤資訊AssertionError進行了捕捉。
而如果直接使用assertEquals時,如發生了驗證失敗,則會停止測試用例的執行,之後的測試將不再執行。
testTest1(){ assertEquals(); }
testTest2(){ assertEquals(); }
testTest3(){ assertEquals(); }
比如,如果testTest1()中的assertEquals();失敗,那個testTest2()、testTest3()則就不會執行了。
report.writeExcel(packageName,className,methodName,remark,"success",reason); 這句程式碼你注意到了嗎?
assert驗證成功了,執行一遍,驗證失敗了,也執行一遍,只是第5個引數,一個是”success”,一個是”fail” ,用你聰明的小腦袋想想,是不是有點眉目了,那我們就下一個教程分享吧。
相關推薦
單元測試教程(二):Assert驗證的重寫
new verifyAssert().verifyEquals(result, 2, remark, “com.bjcj.OS.JB”, “testJBu”, “testJuBu2”); 這句程式碼是做什麼的呢?其實是重新封裝了assert斷言
談談單元測試之(二):測試工具 JUnit 3
前言 上一篇文章《 為什麼要進行煩人的單元測試?》討論了一下現階段軟體開發中,程式設計師們測試情況的現狀。這篇文章中,我打算介紹一下單元測試的工具(外掛),並且推薦大家以後在開發中,真正的用上單元測試,用好單元測試。
聊聊 Python 的單元測試框架(二):nose 和它的繼任者 nose2
作者:HelloGitHub-Prodesire HelloGitHub 的《講解開源專案》系列,專案地址:https://github.com/HelloGitHub-Team/Article 一、nose nose 是一個第三方單元測試框架,它完全相容 unittest,並且號稱是一個更好
iptables實用教程(二):管理鏈和策略
否則 命令顯示 accept 目的 number cep 存在 當前 末尾 概念和原理請參考上一篇文章“iptables實用教程(一)”。 本文講解如果管理iptables中的鏈和策略。 下面的代碼格式中,下劃線表示是一個占位符,需要根據實際情況輸入參數,不帶下劃線的表示是
Nginx實用教程(二):配置文件入門
affinity type 服務 源碼編譯 設置時間 shutdown ber 可用 控制指令 Nginx配置文件結構 nginx配置文件由指令(directive)組成,指令分為兩種形式,簡單指令和區塊指令。 一條簡單指令由指令名、參數和結尾的分號(;)組成,例如:
Git 教程(二):時光穿梭
rac call 替換 img posit key 誤刪 ranch 定位在 我們已經成功地添加並提交了一個readme.txt文件,現在,是時候繼續工作了,於是,我們繼續修改readme.txt文件,改成如下內容: Git is a distributed version
web全棧學習教程(二):本系列教程介紹
系列教程 trap soft 切圖 think html4 style pes html 一、發布周期 計劃2-3天發一篇,半年左右完成。 二、教程大綱 web全棧介紹與優勢分析 本系列教程介紹 切圖與圖片介紹 html4.01 html5 css2.0 css3 頁面布
mybatis教程(二):概念總結
return 單個 其它 array author 擴展 地址 caf eal 一、註意規範 註意:(1).XXXmapper.xml 文件中的 namespace 等於mapper 接口地址 (2).XXXmapper.java 接口中的方法輸入參數
[翻譯]pytest測試框架(二):使用
此文已由作者吳琪惠授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 呼叫pytest 呼叫命令: python -m pytest [...] 上面的命令相當於在命令列直接呼叫指令碼 pytest [...](前提是python已經加入環境變數) 一些幫
Linux小小白入門教程(二):Linux系統安裝
學些Linux最好的方式就是實際操作一番。所以安裝Linux是必然,否則永遠學不會。考慮到學習的方便性,我們將會使用虛擬機器來安裝Linux作業系統。 下載CentOS7系統映象 為了降低大家學習成本,建議大家安裝的Linux版本統一為Centos 7 。下載地址自
python3教程(二):下載安裝python
python程式碼可以在任意系統上執行,mac、windows、linux都可以。 因為某些原因(qiong),所以沒有用過mac,但是記得mac應該是自帶python的,如果是2.x版本則下載個3.7版本即可。 如果你是linux使用者,linux上也是自帶python,直接輸入pyt
jmeter教程(二):環境準備
寫了半天,按了一下鍵盤,全沒了,好吧,我逗B了,重新寫過。。。 要想使用jmeter,肯定要先安裝jmeter,而jmeter的執行,得依賴jdk,當然還有錄製指令碼的badboy(可選)。先從基本的jdk安裝說起,那麼這裡會講在windows版和linux版的安裝。先講windows版的:
【selenium3+JAVA】介面自動化測試教程(二)——瀏覽器的關閉
瀏覽器的關閉有兩個方法,如下所示: System.setProperty("webdriver.chrome.driver", "D:\\test\\driver\\chromedriver.exe"); ChromeDriver chrome = new Ch
Navicat使用教程(二):使用MySQL日誌(第2部分)——二進位制日誌
下載Navicat for MySQL最新版本 Navicat for MySQL 是一套管理和開發 MySQL 或 MariaDB 的理想解決方案。使用Navicat for MySQL可以同時連線到 MySQL 和 MariaDB。Navicat for MySQL提供了強大的前端
【翻譯】CodeMix使用教程(二):重構
在CodeMix中重構 通過重構程式碼而不修改執行時行為,使用原始碼重構來提高專案的質量和可維護性。 CodeMix中的重構由語言服務提供。 CodeMix通過TypeScript語言服務內建了對TypeScript和JavaScript重構的支援。 通過提供語言服務的Code OSS擴充套件提供對
Unity Shader入門教程(二) :實現頂點和片元著色器之間的通訊
這篇文章將介紹Pass{}內的程式碼的編寫。我們先看如下Unity Shader程式碼:(此文部分採自《unity shader入門精要》) 關於頂點著色器和片元著色器不懂的學習可以自行搜尋概念的意思,這裡就不介紹了。 Shader "Custom/myTest" {
Elasticsearch 通關教程(二): 索引對映Mapping問題
資料庫建表的時候,我們的DDL語句一般都會指定每個欄位的儲存型別,例如:varchar,int,datetime等等,目的很明確,就是更精確的儲存資料,防止資料型別格式混亂。 CREATE TABLE `shop_` ( `id_` varchar(36) NOT NULL COMMENT 'id',
nightwatch + selenium 瀏覽器自動化測試 教程(二)
上一篇已經講述瞭如何搭建環境,這一片主要針對語法進行 目錄 測試案例 測試案例 module.exports = { 'Demo test Google' : function (browser) { browser .url('htt
談談單元測試之(四):測試工具 TestNG
前言 上一篇文章《測試工具 JUnit 4》中提到了 JUnit 4,並對 JUnit 4 做了簡單的討論,這篇文章我們將要圍繞另一款測試工具討論 —— TestNG。其實,這篇文章應該寫在《測試工具 JUnit 3》之後,和《測試工具 JU
談談單元測試之(三):測試工具 JUnit 4
前言 上一篇文章《測試工具 JUnit 3》簡單的討論了 JUnit 3 的使用以及內部的方法。這篇文章將會在 JUnit 3 的基礎上,討論一下 JUnit 4 的新特性。同時,與 JUnit 3 做一個簡單的對比。那麼,廢話就不多說了,直