JUnit——(一)使用IDEA進行基本操作


 JUnit是一個回歸測試框架(regression testing framework)。Junit測試是程序員測試,即所謂白盒測試,因為程序員知道被測試的軟件如何(How)完成功能和完成什么樣(What)的功能。Junit是一套框架,繼承TestCase類,就可以用Junit進行自動測試了。

1. 創建項目

其中:

1)com.junit.MyClass用於存放類

2)為了不將測試添加到源中,創建與src平級的目錄:tests,存放測試類。這樣測試將從產品代碼中分離出來。然后Mark Director As:Test Source Root

 

2. 在com.junit.MyClass中添加新的類用於測試:

Calculator.java

package com.junit.MyClass;

/**
 * Created by lesley on 2017/1/14.
 */
public class Calculator {
    public int add(int value1, int value2){
        return value1 + value2;
    }
}

 

3. 添加Calculator的單元測試類

點擊類名,選擇 Go to——test

或者直接:Cmd + Shift + T:

 

選擇JUnit4作為單元測試庫。IDEA將這個庫添加到模塊中。選擇生成add()方法

當測試類生成以后,我們可以為我們的測試方法CalculatorTest添加方法:

package com.junit.MyClass;

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

import static org.junit.Assert.*;

/**
 * Created by lesley on 2017/1/14.
 */
public class CalculatorTest {
    //注意這個不能忘記!!要不然后面無法調用
    private Calculator calculator;
    @Before
    public void setUp() throws Exception {
        calculator = new Calculator();
    }

    @Test
    public void add() throws Exception {
        assertEquals(calculator.add(3, 5),8);
    }

}

 

 4. 運行測試

點擊 Run CalculatorTest

結果顯示如下:

 

 5. 編輯測試設置

我們可以通過Run ——Edit Configuration或工具欄上的標簽來調整我們測試運行配置:

在Configuration選項卡,用戶可以選擇需要運行的測試。例如,您可以從一個類、程序包、測試套件或甚至模式中運行所有的測試。這里的Fork模式讓用戶在一個單獨的進程運行每個測試。

代碼覆蓋測試:

1)默認情況下使用自己的測試引擎

2)覆蓋率模式:Tracing會增加消耗,但是測試會更准確

 

 6. 運行覆蓋

收集覆蓋率,用戶需要通過Run → Run 'MyClassTest' with Coverage或工具欄上的選項運行特定模式的測試。

 

當覆蓋模式運行至少一個測試之后,IDE將會在Project工具窗口顯示每個程序包、類的覆蓋率數據,同時在Coverage工具窗和編輯器中也會顯示。

如果用戶添加另一個方法到MyClass,並運行覆蓋率測MyClass,就會發現,沒有被測試覆蓋到的代碼都將高亮顯示為紅色。覆蓋的代碼顏色則是綠色。如果一些代碼是只覆蓋部分,那沒將顯示為黃色。

 

7. 批量操作

我們寫兩個測試類:一個是剛剛寫的Calculator.java,還有一個為User.java:

package com.junit.MyClass;

/**
 * Created by lesley on 2017/1/14.
 */
public class User {
    public String getName(){
        return ("sbw");
    }
}

User類對應的UserTest.java:

package com.junit.MyClass;

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

import static org.junit.Assert.*;

/**
 * Created by lesley on 2017/1/14.
 */
public class UserTest {
    private User user;
    @Before
    public void setUp() throws Exception {
        user = new User();

    }
    @Test
    public void getName() throws Exception {
        assertEquals("sbw", user.getName());

    }

}

如果我們要批量執行這兩個類有兩種方法:

一、點擊tests下面這個測試包“com.junit.MyClass”,選“Run Tests in com.junit.MyClass”就可以執行這個包下所有的測試:

 

二、引入“測試套件”

如果我們只是選擇性的執行一些測試類,則我們可以利用“測試套件”——Suite(or test suite)。

編寫測試套件的原則:

 1. 創建一個空類作為測試套件的入口;

  2. 使用注解 org.junit.runner.RunWith 和 org.junit.runners.Suite.SuitClasses 修飾這個空類

  3. 將org.junit.runners.Suite作為參數傳入給注解RunWith,以提示Junit為此類測試使用套件運行器執行。

  4. 將需要放入此測試套件的測試類組成數組作為注解SuiteClasses的參數

  5. 保證這個空類使用public修飾,而且存在公開的不帶任何參數的構造函數

AllTest.java:

package com.junit.MyClass;

/**
 * Created by lesley on 2017/1/14.
 */
import org.junit.runner.*;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({
        CalculatorTest.class,
        UserTest.class
})
public class AllTest {

}

這個時候項目的結構如下:

 


免責聲明!

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



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