軟件測試技術第一次試驗之——JUnit的安裝與使用


眾所周知,在一個大型的軟件項目中,測試是必不可少的。傳統的測試方法往往要自己編寫測試函數再結合測試用例進行驗證,這樣會顯得比較繁瑣。所以我們可以使用JUnit框架進行測試。

使用junit的好處就是這個結果是否正確的判斷是它來完成的,我們只需要看看它告訴我們結果是否正確就可以了,在一般情況下會大大提高效率。

下圖為傳統測試方法與JUnit測試方法的代碼量對比。

接下來就是安裝JUnit了

前提條件:電腦已安裝eclipse,已配置java環境。

步驟一:下載JUnit與Hamcrest對應的jar包(注:Hamcrest是JUnit底層的匹配工具)

必須文件如圖所示:

接下來將這些文件導入對應項目中。(注:為了項目的可遷移性這里暫時不添加到全局變量。)

在Eclipse中新建項目 (File - new - javaproject)

建完項目之后右鍵點擊項目,選擇Build Path - Configure Build Path

然后點擊Libraries - Add External JARs,選擇你剛才下載的三個jar包,點擊打開。

導入完成如圖所示

查看左側項目中應該多出來這三個jar包,至此JUnit項目環境已配置完成。

步驟二:安裝測試覆蓋率工具 Eclemma 

在Eclipse上方菜單欄中點擊Help,選擇Eclipse Marketplace,在搜索欄中輸入Eclemma,搜索出來后點擊Install安裝即可。

如果Eclipse上方導航欄出現這樣一個小標記說明安裝成功:

 

至此,環境配置已全部完成,下面來編輯一個小程序來測試一下Junit。

步驟三:程序測試

從最簡單的測試加法減法開始,便於新手理解。

在項目下src文件夾下新建一個包(package),這里我命名為cn.tjuscs.st,大家可以自行命名。

在項目下新建類(class),我命名為MyTest,大家可以自行命名。

下面為代碼:

package cn.tjuscs.st;

public class MyTest {

    private int result;
    
    public void add(int a, int b)
    {
        result = a + b;
    }
    
    public void substract(int a, int b)
    {
        result = a - b;
    }
    
    public int getresult()
    {
        return result;
    }
    
}

很簡單的加法與減法函數,相信大家都可以看得懂。

然后右鍵點擊MyTest.java,選擇new-JUnit Test Case,點擊next選擇函數add和substract后點擊finish。這里不選擇也可以,后續自行編輯。

然后eclipse會生成一個MyTestTest.java的類,表示這個是測試類。

下面是編輯后MyTestTest.java的代碼:

package cn.tjuscs.st;

import static org.junit.Assert.*;

import org.junit.Test;
import org.junit.Ignore;

public class MyTestTest {
    
    MyTest t=new MyTest();

    @Test
    public void testAdd() {
        t.add(1,4);
        assertEquals(5, t.getresult());
    }
    
    @Test
    public void testSubstract() {
        t.substract(9,4);
        assertEquals(5, t.getresult());
    }
    
}

代碼解釋:@Test告訴JUnit接下來進行測試,assertEquals(期望值,測試用例);是JUnit自帶的函數用來檢測是否與預期相符。

因為1+4=5,9-4=5,這里兩個測試都沒有出問題,所以運行結果應該是一片綠色。

運行方法:在這個文件下點擊右鍵-run as-junit test

運行結果:

現在修改一下程序,把程序中的9換成6,按ctrl+s保存完再運行一下。

這里就可以看到testSubstract這個函數出錯了,和預期不符。

再來試一下覆蓋率測試工具eclemma:

點擊剛才裝完eclemma生成的小圖標旁邊的小箭頭,選擇MyTestTest,這里可以看到結果如下:

紅色代表未執行,黃色代表條件沒有全部執行(通常適用於if語句等),綠色代表執行過了。

如果這幾次運行結果和圖中相符,那么說明之前的步驟都沒有問題了,接下來進行編寫一個簡單的三角形的測試程序。

很簡單的代碼,只是為了了解一下junit的使用方法,所以就不添加其他檢測與判斷,這里就不再贅述了。

TestTriangle.java:

package cn.tjuscs.st;

public class TestTriangle {
    
    public int getkind(int a, int b, int c)
    {
        int kind = 0;
        if (a+b<=c || a+c<=b || b+c<=a || a<=0 || b<=0 || c<=0)
            kind = -1;    //-1代表三角形不成立
        else if (a==b && b==c)
            kind = 1;  //1代表等邊三角形
        else if ((a==b && a!=c) || (a==c && a!=b) || (b==c && b!=a))
            kind = 2; //2代表等腰三角形
        else if (a!=b && b!=c)
            kind = 3; //3代表普通三角形
        
        return kind;
    }
    
}

TestTriangleTest.java:

package cn.tjuscs.st;

import static org.junit.Assert.*;

import org.junit.Test;

public class TestTriangleTest {

    TestTriangle t = new TestTriangle();
    
    @Test
    public void test_not_a_triangle() {
        assertEquals(-1,t.getkind(1,2,3));
    }
    @Test
    public void test_equilateral() {
        assertEquals(1,t.getkind(2,2,2));
    }
    @Test
    public void test_isosceles() {
        assertEquals(2,t.getkind(2,2,3));
    }
    @Test
    public void test_scalene() {
        assertEquals(3,t.getkind(2,3,4));
    }
    
    
}

運行結果:

這里四個函數全部運行正確,符合預期。

 

總結:作為軟件開發人員,在大型項目中測試往往是一項工作量相當大的事情。如何正確地利用工具提高效率是作為一個程序員所必須知道的。JUnit就是一個相當好的工具,雖然成不了巨人,但是我們應該站在巨人的肩膀上看的更遠。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM