軟件單元測試工具junit junit4使用幫助

在咱們Java軟件開發過程當中,相應的測試也在有序穿插的進行着;在軟件公司中稱之爲單元測試,單元測試,顧名思義:就是對一個個小的獨立的功能模塊進行測試,咱們經常使用的單元測試工具備不少種,今天咱們就來介紹一下你們最經常使用的JUNIT單元測試工具。
junit單元測試工具主要的版本是:3.x 和 4.x ;你們如今經常使用的應該都是4.x版本,那麼junit3.x 與 4.x有什麼區別呢?junit4.x又有哪些好用的快捷的功能呢?
一、junit3.x版本,咱們一般使用junit 3.8
(1)、使用junit3.x版本進行單元測試時,測試類必需要繼承於TestCase父類;
(2)、測試方法須要遵循的原則:
     A、public的
     B、void的
     C、無方法參數
     D、方法名稱必須以test開頭
(3)、不一樣的Test Case之間必定要保持徹底的獨立性,不能有任何的關聯。
(4)、咱們要掌握好測試方法的順序,不能依賴於測試方法本身的執行順序。
dome: html

public class TestMyNumber extends TestCase {

    private MyNumber myNumber;

    public TestMyNumber(String name) {
        super(name);
    }

    // 在每一個測試方法執行 [以前] 都會被調用
    @Override
    public void setUp() throws Exception {
        // System.out.println("歡迎使用Junit進行單元測試…");
        myNumber = new MyNumber();
    }

    // 在每一個測試方法執行 [以後] 都會被調用
    @Override
    public void tearDown() throws Exception {
        // System.out.println("Junit單元測試結束…");
    }

    public void testDivideByZero() {
        Throwable te = null;

        try {
            myNumber.divide(6, 0);

            Assert.fail("測試失敗");
        } catch (Exception e) {
            e.printStackTrace();
            te = e;
        }

        Assert.assertEquals(Exception.class, te.getClass());
        Assert.assertEquals("除數不能爲 0 ", te.getMessage());
    }
} dom

二、junit4.x版本
(1)、使用junit4.x版本進行單元測試時,不用測試類繼承TestCase父類,由於,junit4.x全面引入了Annotation來執行咱們編寫的測試。
(2)、junit4.x版本,引用了註解的方式,進行單元測試;
(3)、junit4.x版本咱們經常使用的註解:
     A、@Before 註解:與junit3.x中的setUp()方法功能同樣,在每一個測試方法以前執行;
     B、@After 註解:與junit3.x中的tearDown()方法功能同樣,在每一個測試方法以後執行;
     C、@BeforeClass 註解:在全部方法執行以前執行;
     D、@AfterClass 註解:在全部方法執行以後執行;
     E、@Test(timeout = xxx) 註解:設置當前測試方法在必定時間內運行完,不然返回錯誤;
     F、@Test(expected = Exception.class) 註解:設置被測試的方法是否有異常拋出。拋出異常類型爲:Exception.class;
     G、@Ignore 註解:註釋掉一個測試方法或一個類,被註釋的方法或類,不會被執行。
dome: ide

package com.an.junit;

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class TestMyNumber {

    private MyNumber myNumber;

    @BeforeClass
    // 在全部方法執行以前執行
    public static void globalInit() {
        System.out.println("init all method...\r\n");
    }

    @AfterClass
    // 在全部方法執行以後執行
    public static void globalDestory() {
        System.out.println("destory all method...");
    }

    @Before
    // 在每一個測試方法以前執行
    public void setUp() {
        System.out.println("start setUp method");
        myNumber = new MyNumber();
    }

    @After
    // 在每一個測試方法以後執行
    public void tearDown() {
        System.out.println("end tearDown method\r\n");
    }

    @Test(timeout=600)// 設置限定測試方法的運行時間 若是超出則返回錯誤
    public void testAdd() {
        System.out.println("testAdd method");

        int result = myNumber.add(2, 3);

        assertEquals(5, result);
    }

    @Test
    public void testSubtract() {
        System.out.println("testSubtract method");

        int result = myNumber.subtract(1, 2);

        assertEquals(-1, result);
    }

    @Test
    public void testMultiply() {
        System.out.println("testMultiply method");

        int result = myNumber.multiply(2, 3);

        assertEquals(6, result);
    }

    @Test
    public void testDivide() {
        System.out.println("testDivide method");

        int result = 0;

        try {
            result = myNumber.divide(6, 2);
        } catch (Exception e) {
            fail();
        }

        assertEquals(3, result);
    }

    @Test(expected = Exception.class)
    public void testDivide2() throws Exception {
        System.out.println("testDivide2 method");

        myNumber.divide(6, 0);
        fail("test Error");
    }
   
    public static void main(String[] args) {

    }
} 工具


總 結:在單元測試中,測試用例的編寫是很重要的,只有一個好的測試用例,才能檢測出軟件代碼的健壯性,才能提升最後開發出軟件的成功率;你們必定要明白一 點,咱們進行單元測試,不是爲了證實您是對的,而是爲了證實您沒有錯誤;只有這樣咱們的測試纔有意義;還有一點就是,在咱們進行單元測試以後必定要保證代 碼的狀態和進行單元測試以前是一致的;不能由於進行了單元測試,就要把原來的代碼狀態打亂,這樣是不合理的,也是不符合邏輯的。咱們不能只懂軟件開發,也 要懂得如何更好的去找出你所開發的軟件中存在的問題,只有這樣,才能算是一位合格的軟件開發工程師post

轉載自安安DIY創做室 http://www.vscsoft.com/
本文連接:http://www.vscsoft.com/post/65.html 單元測試

相關文章
相關標籤/搜索