JUnit 單元測試

來源:互聯網
上載者:User

標籤:sage   har   對象   測試的   操作   編程   mod   for   程式員   

(1)什麼是測試?TDD
TDD是測試編程驅動,編程方法學,也是一種編程思想,是先寫測試案例再編碼。特點是:保證了代碼的品質,測試的覆蓋率高,但是開發效率低。
DDD
領域驅動設計
測試本身也是一套完整學科單元測試
  • 白盒測試 --- 能看到完整的代碼
  • 黑箱測試 --- 沒有源碼的,也叫功能測試。
  • 灰盒測試
壓力測試
並發數的問題,能承載多少並發
疲勞強度測試
系統長期穩定運行,如果72小時能穩定運行,說明該系統度過了疲勞強度初步測試,正常是7天
煙霧測試 (Smoke Test)
對一個功能點瘋狂的測試,主要是對流程測試,如支付環節
整合測試
完成功能的測試,最重要的是測試整體商務程序
迴歸測試
當其他測試都完成後,當增加一個功能或者修改時,有可能影響整個系統,這時候就需要迴歸測試
自動化測試
需要編碼、類比情境設計
(2)JUnit 簡介

JUnit 是用於編寫和運行可重複的自動化測試的開源測試架構,這樣可以保證我們的代碼按預期工作。JUnit 可廣泛用於工業和作為支架(從命令列)或IDE(如 IDEA)內單獨的 Java 程式。 JUnit 提供:

  • 斷言測試預期結果。
  • 測試功能共用通用的測試資料。
  • 測試套件輕鬆地組織和運行測試。
  • 圖形和文本測試回合。
  • JUnit 用於測試:
  • 整個對象
  • 對象的一部分 - 互動的方法或一些方法
  • 幾個對象之間的互動(互動)
JUnit 特點
  • JUnit 是用於編寫和運行測試的開源架構。
  • 提供了注釋,以確定測試方法。
  • 提供斷言測試預期結果。
  • 提供了測試回合的運行測試。
  • JUnit 測試讓您可以更快地編寫代碼,提高品質
  • JUnit 是優雅簡潔。它是不那麼複雜以及不需要花費太多的時間。
  • JUnit 測試可以自動運行,檢查自己的結果,並提供即時反饋。沒有必要通過測試結果報告來手動梳理。
  • JUnit 測試可以組織成測試套件包含測試案例,甚至其他測試套件。
  • Junit 顯示測試進度的,如果測試是沒有問題條形是綠色的,測試失敗則會變成紅色。
(3) JUnit 註解

 

@Test  public void method() //測試注釋指示該公用無效方法它所附著可以作為一個測試案例。@Before public void method()    //Before 注釋表示,該方法必須在類中的每個測試之前執行,以便執行測試某些必要的先決條件。@BeforeClass public static void method()    //BeforeClass 注釋指出這是附著在靜態方法必須執行一次並在類的所有測試之前。發生這種情況時一般是測試計算共用配置方法(如串連到資料庫)。@After public void method()    //After 注釋指示,該方法在執行每項測試後執行(如執行每一個測試後重設某些變數,刪除臨時變數等)@AfterClass public static void method()    //當需要執行所有的測試在 JUnit 測試案例類後執行,AfterClass 註解可以使用以清理建立方法,(從資料庫如中斷連線)。注意:附有此批註(類似於 BeforeClass)的方法必須定義為靜態。@Ignore public static void method()    //當想暫時禁用特定的測試執行可以使用忽略注釋。每個被註解為 @Ignore 的方法將不被執行。

 

(4)第一個 JUnit 單元測試POM

pom.xml 檔案如下:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.xue</groupId>    <artifactId>hello-spring</artifactId>    <version>1.0.0-SNAPSHOT</version>    <packaging>jar</packaging>    <dependencies>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context</artifactId>            <version>4.3.17.RELEASE</version>        </dependency>        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.12</version>            <scope>test</scope>        </dependency>    </dependencies></project>

 

主要增加了 junit:junit 依賴

建立測試類別

在測試包下 src/main/test 建立一個名為 MyTest 的測試類別,代碼如下:

package com.xue.hello.spring.test;import org.junit.After;import org.junit.Before;import org.junit.Test;public class MyTest {    /**     * 執行測試方法前執行     */    @Before    public void before() {        System.out.println("執行 before() 方法");    }    /**     * 執行測試方法後執行     */    @After    public void after() {        System.out.println("執行 after() 方法");    }    @Test    public void testSayHi() {        System.out.println("Hi Log4j");    }    @Test    public void testSayHello() {        System.out.println("Hello Log4j");    }}

 

(5)JUnit 斷言什麼是斷言

斷言是編程術語,表示為一些布林運算式,程式員相信在程式中的某個特定點該運算式值為真,可以在任何時候啟用和禁用斷言驗證,因此可以在測試時啟用斷言而在部署時禁用斷言。同樣,程式投入運行後,終端使用者在遇到問題時可以重新啟用斷言。

使用斷言可以建立更穩定、品質更好且 不易於出錯的代碼。當需要在一個值為 false 時中斷當前操作的話,可以使用斷言。單元測試必須使用斷言(Junit/JunitX)。

常用斷言方法
斷言 描述
void assertEquals([String message], expected value, actual value) 斷言兩個值相等。值可能是類型有 int, short, long, byte, char or java.lang.Object. 第一個參數是一個可選的字串訊息
void assertTrue([String message], boolean condition) 斷言一個條件為真
void assertFalse([String message],boolean condition) 斷言一個條件為假
void assertNotNull([String message], java.lang.Object object) 斷言一個對象不為空白(null)
void assertNull([String message], java.lang.Object object) 斷言一個對象為空白(null)
void assertSame([String message], java.lang.Object expected, java.lang.Object actual) 斷言,兩個對象引用相同的對象
void assertNotSame([String message], java.lang.Object unexpected, java.lang.Object actual) 斷言,兩個對象不是引用同一個對象
void assertArrayEquals([String message], expectedArray, resultArray) 斷言預期數組和結果數組相等。數組的類型可能是 int, long, short, char, byte or java.lang.Object.

注意:==比較的是地址, equals比較的是值

測試斷言效果

在之前的單元測試類中建立一個名為 testAssert 方法來查看斷言效果

/** * 測試斷言 */@Testpublic void testAssert() {    String obj1 = "junit";    String obj2 = "junit";    String obj3 = "test";    String obj4 = "test";    String obj5 = null;    int var1 = 1;    int var2 = 2;    int[] arithmetic1 = {1, 2, 3};    int[] arithmetic2 = {1, 2, 3};        //如果為真往下執行    assertEquals(obj1, obj2);    assertSame(obj3, obj4);    assertNotSame(obj2, obj4);    assertNotNull(obj1);    assertNull(obj5);    assertTrue("為真", var1 == var2);    assertArrayEquals(arithmetic1, arithmetic2);}

 

 

JUnit 單元測試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.