使用Junit測試框架學習Java

前言

  在平常的開發中,離不開單元測試,並且在學習Java時,特別是在測試不一樣API使用時要不停的寫main方法,顯得很繁瑣,因此這裏介紹使用Junit學習Java的方法。此外,我使用log4j將結果輸出(在項目中不這麼用,這裏僅是使用)。爲了方便大夥瞭解,我簡單總結了一下簡單測試代碼並傳到GitHub上了,後續我也會持續更新的,歡迎大夥批評指正。java

1. Junit簡介和使用

  1.1 Junit簡介

  1.1.1 Junit相關標識

  @BeforeClass會在全部方法調用以前執行,該方法是靜態的,當測試類被加載後後接着運行它,比較適合加載配置文件。git

  @AfterClass標註的方法也是靜態,在全部方法以後執行,適合對資源的清理,好比釋放數據庫的釋放。github

  @Before和@After在每一個測試方法先後都被執行一遍。數據庫

  @Test將方法標識爲測試方法。在使用時也有以下幾種用法:apache

  1.      @Test(timeout=N),在執行相似死循環的情景下,能夠設置結束時間。
  2.      @Test(except=…) 能夠接收測試方法中的異常,讓測試不報錯。

  1.1.2 Junit測試套件

  爲方便組織多個測試類一塊兒運行,可使用測試套件,步驟以下:app

  1. 寫一個不含其它方法的類做爲測試套件的入口類;
  2. 更改測試運行器Suite.class;
  3. 將要測試的類做爲參數傳入SuiteClasses({});

  1.1.3 Junit參數化設置

  在代碼結構、方法等相同,僅參數和預期值不一樣的狀況下,可使用Junit中的參數化設置。框架

  1. 將測試運行器改成Parameterized.class;
  2. 聲明變量來保存參數和預期值;
  3. 要有個public的構造函數;
  4. 返回值爲公共的static的Collection方法,並使用@Parameters進行修飾;

  此外,在類中使用@Test標識要測試的方法。maven

 1.2 Junit的maven依賴

  爲了使用Junit測試框架,只需在maven項目的pom文件中加入依賴便可,這裏也加入了log4j的pom文件配置,期中版本的選擇能夠根據實際狀況設置,以下:函數

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>    

2.  測試示例

  在實際的類、方法的命名上,格式建議爲test+類名/方法名,這樣有助於理解,固然這不是必須的。單元測試

import org.apache.log4j.Logger;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
import static org.junit.Assert.assertEquals;

public class TestMap {
    private static final Logger logger=Logger.getLogger(TestMap.class);

    @Test
    public void testPut(){
        Map<String ,Integer> map=new HashMap<>();
        map.put("apple",123);
        map.put("banana",2345);
        logger.info(map.get("apple"));
        logger.info(map.put("apple",567));
        logger.info(map.get("apple"));
        logger.info(map.put("water",1000));
    }
    @Test
    public void testTraverse(){
        Map<String,Integer> map=new HashMap<>();
        map.put("a",1);
        map.put("b",2);
        map.put("c",3);
        assertEquals(map.get("c"),new Integer(3));

        for(String key:map.keySet()){
            System.out.println(map.get(key));
        }

        for(Map.Entry<String,Integer> entry:map.entrySet()){
            System.out.println(entry.getKey()+"="+entry.getValue());

        }
    }
}

   很是歡迎大夥留言分享本身的經歷!

相關文章
相關標籤/搜索