1. 程式人生 > >單元測試教程(二):Assert驗證的重寫

單元測試教程(二):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 做一個簡單的對比。那麼,廢話就不多說了,直