JUnit單元測試

第一部分:單元測試含義

單元測試就是編寫的一段代碼,用於檢驗目標代碼的一個功能模塊是否正確,就是對代碼功能是否達到要求的測試。html

利用單元測試能夠使得不少工做變得方便起來,沒必要啓動重複而又繁雜的服務。
 

第二部分:JUnit的概念

JUnit是一個Java語言的單元測試框架。 JUnit有它本身的JUnit擴展生態圈。多數Java的開發環境都已經集成了JUnit做爲單元測試的工具。java

JUnit用於編寫和運行可重複的測試。用於單元測試框架體系xUnit的一個實例(用於java語言)。
它的特色以下:
  1. 用於測試指望結果的斷言(Assertion)
  2. 用於共享共同測試數據的測試工具
  3. 用於方便的組織和運行測試的測試套件
  4. 圖形和文本的測試運行器

第三部分:JUnit4.x

現階段不少人都會使用JUnit4.x版原本進行單元測試。app

JUnit4.x中擁有多個經常使用註解:框架

  • @Before 在測試方法運行前運行
  • @BeforeClass 全局僅執行一次,且第一個運行
  • @After 在測試方法運行後容許
  • @AfterClass 全局僅執行一次,且最後一個運行
  • @Ignore 忽略此方法
  • @Test 測試方法

第四部分:在eclipse上使用

 1.建立一個JUnitTest的項目,再寫一個叫作CeShi的類(測試)。eclipse

public class CeShi {

    private static int result; 
    public  void add(int n) {
        result = result + n;        //這個是正確的
    }
    public void minus(int n) {
        result = result + 10086;        //明顯是錯誤的
    }
    public int getResult(){
        return result;
    }

}

 

2.將JUnit4導入項目中。ide

右擊項目選擇最下面的Properties(屬性)工具

 3.生成測試框架。單元測試

在CeShi.java上右擊,創造新的JUnit Test Case。測試

next後選擇CeShi中寫出來的兩個方法spa

 

結束後自動生成了一個新類,叫CeShiTest

4.修改CeShiTest的代碼。

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

public class CeShiTest {
    private static CeShi ceshi = new CeShi();

    @Before
    public void setUp() throws Exception {
    }

    @Test
    public void testAdd() {
        ceshi.add(3);
        ceshi.add(4);
        assertEquals(7, ceshi.getResult());

    }

    @Test
    public void testMinus() {
        ceshi.add(8);
        ceshi.minus(3);
        assertEquals(5, ceshi.getResult());

    }

}

5.運行測試代碼。

6.測試結果

表示第一個add成功,而第二個minus失敗。

 

_(:3 」∠ )__(:3 」∠ )__(:3 」∠ )__(:3 」∠ )_***分割線***_(:3 」∠ )__(:3 」∠ )__(:3 」∠ )__(:3 」∠ )_

其實我本身也以爲我上面的寫的那個太簡陋了…………因而我打算找一個JAVA項目來進行測試,而後我發現一個嚴重的問題:網上java項目太多我難如下手(´A`。)

因而我便借鑑了博客園一位用戶的代碼

地址:https://www.cnblogs.com/happyzm/p/6482886.html

在原先的基礎上添加了一些代碼

public class CeShi {

    private static int result; 
    public  void add(int n) {
        result = result + n;        //這個是正確的
    }
    public void minus(int n) {
        result = result + 10086;        //明顯是錯誤的
    }
    
    public void multiply(int n) {
   
    }                                // 此方法還沒有寫好
    public void divide(int n) {
        result = result / n;
    }
    public void square(int n) {
        result = n * n;
    }
    public void squareRoot(int n) {
        for (; ;) ;                      //Bug : 死循環
    }
    public void clear() {              
        result = 0;
    }
    
    public int getResult(){
        return result;
    }

}
import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

import jdk.nashorn.internal.ir.annotations.Ignore;

public class CeShiTest {
    private static CeShi ceshi = new CeShi();

    @Before
    public void setUp() throws Exception {
        ceshi.clear();
    }

    @Test
    public void testAdd() {
        ceshi.add(3);
        ceshi.add(4);
        assertEquals(7, ceshi.getResult());
    }

    @Test
    public void testMinus() {
        ceshi.add(8);
        ceshi.minus(3);
        assertEquals(5, ceshi.getResult());
    }    
    @Test
    public void testSubstract() {
        ceshi.add(8);
        ceshi.minus(3);
        assertEquals(5, ceshi.getResult());

    }
    @Test
    public void testMultiply() {
        fail("Not yet implemented");
    }
    @Test
    public void testDivide() {
        ceshi.add(8);
        ceshi.divide(2);
        assertEquals(4, ceshi.getResult());
    }
}

因爲其中有一個死循環,而JUnit還能夠限時,因此我在本身的電腦上跑了一遍。

在CeShiTest.java裏添加代碼:

    @Test(timeout = 2000)
    public void squareRoot() {
        ceshi.squareRoot(4);
        assertEquals(2, ceshi.getResult());
    }

JUnit也能夠進行異常測試,我本身在電腦上試了一下,這裏就不說了,是按照https://www.cnblogs.com/happyzm/p/6482886.html 裏去作的。

第五部分:總結

JUnit使用起來很方便,但我如今才發覺,做爲一個軟件工程的學生,只會擺出理論的一套,實際上手去作的時候老是不知該如何開始。

其次就是,我明白了JUnit是個什麼東西,它有什麼用,但實際要用到項目上去的時候,我極可能會完徹底全的忽略掉它。

仍是把網上的各類項目都試試看吧,java基礎很差,各類項目我都看暈了_(´ཀ`」 ∠)_

相關文章
相關標籤/搜索