1. 程式人生 > >TestNG入門教程-15-Java語言的斷言和Junit的斷言

TestNG入門教程-15-Java語言的斷言和Junit的斷言

       前面幾篇,我們差不多都是圍繞測試失敗來介紹,這篇來補充一下測試結果的一些知識。在TestNG的測試報告中有,成功,失敗,跳過的三種狀態。成功指的是用例執行完了沒有丟擲異常或者丟擲的異常是期待的異常,沒有任何報錯,我們一般寫斷言語句來驗證測試檢查點是成功的。測試失敗,就是指用例執行後遇到了報錯,跳過是指,由於前面失敗了,後面的用例無法執行就標記跳過的狀態。這篇,我們來討論下寫測試用例的過程中斷言的使用。這個系列前面文章,我介紹過硬斷言和軟斷言,這個是TestNG提供的,今天介紹Java自帶的斷言和Junit得斷言方法。

1. Java中assert

package demo2;

import org.testng.annotations.Test;

/**
 * create by Anthony on 2017/12/3
 */
public class demo {

    @Test
    public void testAssert() {

        String st = "Hello TestNG";
        assert st.endsWith("1TestNG"): st + "是以TestNG結尾";
    }
}

assert的用法有

assert 表示式1

assert 表示式1:表示式2

       上面我寫這個斷言,解釋一下什麼含義。我的表示式1就是一個字串結尾判斷,表示式2是一個字串輸出,一般習慣寫message,如果表示式1為假,表示式2就會輸出顯示。執行一下,發現表示式為假,還是顯示用例執行成功。那麼到底是什麼原因呢?原來Java中預設沒有開啟assert的功能。

點選IEAD上Run選單,選擇Edit Configuration,然後在下面圖Jvm輸入引數-ea,再次執行結果會顯示失敗。


開啟assert功能之後,錯誤如下

       從上面過程來看,java雖然提供了assert關鍵字,但是不建議去使用它,太囉嗦。很多IDE預設是沒有在JVM這個地方開啟-ea引數的。這個沒有開啟的問題,我也犯過錯誤,在我部落格文章中的Java+Selenium系列文章基礎篇第五篇就出現這個由於沒開啟,assert寫了和沒寫一樣的效果。

2.Jnuit的斷言

      上面說了不推薦使用java自帶的assert關鍵字,那麼我們來看看Junit中提供的斷言方法。由於早期單元測試就是在Junit中完成,所以,TestNG繼承了一些Junit的思想和方法。下面來看看Junit的斷言,通過下面方法,你在TestNG中也可以使用Junit的斷言方法。

package demo2;

import org.testng.annotations.Test;
import static org.testng.AssertJUnit.*;

/**
 * create by Anthony on 2017/12/3
 */
public class demo {

    @Test
    public void testAssert() {

        String st = "Hello TestNG";
        assertEquals(st, "Hello");
    }
}

       如果要使用Junit的斷言方法,我們需要靜態匯入語句,這個需要提醒一下。因為很多方法是和TestNG中方法名稱一樣,這樣靜態匯入就很好區分。這個TestNG中保留Junit的斷言可能是給那些從Junit轉過到TestNG的人使用的。

總結:

       斷言目前,我們總共介紹了4中,TestNG中的Assert 和SoftAssert, Java語言的Assert,TestNG中整合junit的相關斷言。最重要和使用多多的還是TestNG的Assert語句。什麼時候都可以使用TestNG的Assert下的斷言方法。不管使用Assert還是SoftAssert,如果一個@Test開頭的用例其中一個斷言點出現失敗,Assert就會停止斷言失敗點之後的程式碼,但是不會影響下一個@Test開頭的用例執行,而SoftAssert就會繼續執行斷言同一個用例的其他斷言點。個人建議,一個測試用例,斷言點也就是兩到三個就可以,不是不可以寫多個斷言,而是自動化想要流暢進行,斷言只能是模糊的寫兩三個就可以。斷言點越多,受到干擾項就更多,越容易跑失敗,自己要找一個適合專案實際情況的平衡點。





相關推薦

TestNG入門教程-15-Java語言言和Junit斷言

       前面幾篇,我們差不多都是圍繞測試失敗來介紹,這篇來補充一下測試結果的一些知識。在TestNG的測試報告中有,成功,失敗,跳過的三種狀態。成功指的是用例執行完了沒有丟擲異常或者丟擲的異常是

TestNG入門教程-12-Java程式碼執行testng.xml和失敗後重跑

       前面我們都在IDEA上右鍵testng.xml檔案來執行testng用例,這個在編寫測試用例過程是 可以這麼做,但是,如果測試用例寫完了,也是這麼做嗎?有沒有什麼方法,例如自動化去實現。測試指令碼維護後期,我們都會考慮持續整合測試,那麼如何把執行測試用例實現自

Java Servlet 實戰入門教程-15-servlet 異常處理

異常處理 請求屬性 在發生錯誤時,Web 應用程式必須能夠詳細說明,應用程式中的其他資源被用來提供錯誤響應的內容主體。這些資源的規定在部署描述檔案中配置。 如果錯誤處理位於一個servlet或JSP頁面: 原來開啟的由容器建立的請求和響應物件被傳遞給servle

TestNG 入門教程

learn baidu ann 參數 href 部分 測試類 exceptio obj 最近寫自動化測試每天都用到TestNG, 把常用的TestNG的用法總結下。 閱讀目錄 TestNG介紹 在Eclipse中在線安裝TestNG 在Eclipse中離線安裝T

TestNG入門教程 斷言之HardAssert和SoftAssert

       本篇來介紹TestNG中的Assertion,也是斷言。前面介紹了@Test註釋下大部分的屬性的功能和基本使用。這篇介紹,寫測試用例中的斷言部分。我們知道,一個測試用

Python爬蟲入門教程 15-100 石家莊政民互動資料爬取

寫在前面 今天,咱抓取一個網站,這個網站呢,涉及的內容就是 網友留言和回覆,特別簡單,但是網站是gov的。網址為 http://www.sjz.gov.cn/col/1490066682000/index.html 首先宣告,為了學習,絕無惡意抓取資訊,不管

測試覆蓋率工具:EclEmma TestNG 入門教程

目錄 1 測試覆蓋率實現技術2 EclEmma介紹3 EclEmma測試覆蓋率指標4 EclEmma安裝5 示例專案介紹  5.1 建立專案  5.2 用Coverage as TestNG Suite跑用例 

[零] Java 語言執行原理 JVM原理淺析 入門瞭解簡介 Java語言組成部分 javap命令使用

 The Java Virtual MachineJava虛擬機器是Java平臺的基石。是java實現硬體和作業系統的獨立性(也就是無關性),生成極小體積的編譯程式碼,以及保護使用者免受惡意程式攻擊的的關鍵技術組成部分。Java虛擬機器是一種抽象計算機器。像真正的計算機一樣,它有一個指令集以及在執行時各種記憶

Kafka : Kafka入門教程JAVA客戶端使用

目錄 Kafka簡介 由Scala和Java編寫,Kafka是一種高吞吐量的分散式釋出訂閱訊息系統. 環境介紹 作業系統:centos6.5 kafka:1.0.1 zookeeper:3.4.6 術語介紹 Broker :

python小白入門教程——TypeScript的語言特性

TypeScript是一種給JavaScript新增特性的語言擴充套件,增加的功能主要有:型別註解和編譯時型別檢查、介面、列舉,同時從ES6中反向移植過來了:類、模組、箭頭函式等功能。 型別註解在TypeScript中是記錄函式或變數約束的簡便方法,基於程式碼結構和型

json入門教程+在java中的一些便捷操作

JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式,非常適合於伺服器與 JavaScript的互動。相比XML,他更易於人閱讀和編寫,它是JavaScript的一個子集。 JSON採用完全獨立於語言的文字格式,可以在流行的語言中

cache資料庫入門教程 資料庫m語言常用函式和命令

1.Set 設定變數 set s=3 2.write 輸出變數 w s  3.kill 刪除所有變數或一些指定的變數或所有變數除了指定的變數。 4.new 初始化變數。 5.Do(d):執行命令 6.Quit(q): 結束執行一個函式並返回一個值 7.$Horolog$Hor

jmeter學習指南之響應言和beanshell斷言

一、響應斷言  1、什麼是響應斷言?       在jmeter中最常用的斷言方法是“響應斷言”,它是通過檢查sampler的請求內容和響應結果中是否匹配指定的字串來判斷結果是否正確。       響應斷言簡單實用,能夠解決工作中

[2] JMeter--響應言和beanshell斷言

一、響應斷言  1、什麼是響應斷言?       在jmeter中最常用的斷言方法是“響應斷言”,它是通過檢查sampler的請求內容和響應結果中是否匹配指定的字串來判斷結果是否正確。       響應斷言簡單實用,能夠解決工作中的大部分問題。       尤其是在j

ICE Java語言開發入門教程

一、開發環境與工具 1、Eclipse Mars.1 (4.5.1)  2、Windows OS 3、下載Ice-3.6.1.msi並直接安裝即可。官網地址:https://zeroc.com/download/Ice/3.6/ 。 配置環境變數: 在Path裡新

java函數語言程式設計入門教程

什麼是函數語言程式設計 在介紹函數語言程式設計前,先了解一下平時我們所使用指令式程式設計,指令式程式設計是告訴計算機如何一步一步執行程式設計風格。 比如我們要在一個蘋果的物件集合中篩選出顏色為紅色的蘋果集合。我們需要寫以下程式碼: 建立儲存蘋果的集合list 遍歷這個集合 判斷蘋果顏色是不

Java EE入門教程系列第二章JSP(五)——表示式語言EL

2.5 表示式語言——EL 大量Java指令碼使得JSP頁面難以維護,於是,一種類似JavaScript的語言——EL表示式可用於在網頁上生成動態內容,並代替JSP指令碼元素的技術被推出。 2.5.1 基本語法 ${EL expression} 其中,$是EL語法中的

Java入門教程二(語言基礎)

常量與變數 常量值又稱為字面常量,它是通過資料直接表示 常量 實型常量值 Java 的實型常量值主要有如下兩種形式 十進位制數形式:由數字和小數點組成,且必須有小數點,如 12.34、-98.0 科學記數法形式:如 1.75e5 或 32&E3,其中 e 或 E 之前必須有數字,且 e 或 E 之後的

Java - Struts框架教程 Hibernate框架教程 Spring框架入門教程(新版) sping mvc spring boot spring cloud Mybatis

java ee cloud pac .cn java get pin nat 輕量級 https://www.zhihu.com/question/21142149 http://how2j.cn/k/hibernate/hibernate-tutorial/31.html

匯編語言入門教程

mov 結果 nes yaf .net 所有 dia name you 2018-02-10 阮一峰 21CTO 學習編程其實就是學高級語言,即那些為人類設計的計算機語言。 但是,計算機不理解高級語言,必須通過編譯器轉成二進制代碼,才能運行。學會高級語言,並不等於