JUnit學習筆記

JUnit3與JUnit4差異

  • Junit3:
    • 測試用例必須是公共類。
    • 測試用例必須繼承類TestCase
    • 測試用例的測試方法必須是公有的;
    • 測試用例的測試方法必須被聲明爲void。
    • 測試用例的測試方法的前置名詞必須是test;
    • 測試用例的測試方法無不論什麼參數傳遞;
  • Junit4:
    • 測試類不需要繼承TestCase;
    • 測試方法命名沒有特定要求,僅僅要在待測方法前加上@Test就能夠;
    • 經過@before替代setUp方法,@After替代tearDown方法;
      在一個測試類中,甚至可以使用多個@Before來凝視多個方法,這些方法都是在每個測試以前執行。說明一點。@Before是在每個測試方法執行前均初始化一次,同理@After是在每個測試方法執行完成後均執行一次,也就是說。通過這兩個凝視的初始化和註銷,可以保證各個測試方法之間的獨立性而互不干擾,它的缺點是效率低。
      在JUnit4中增長了一項新特性。

      增長了兩個凝視:@BeforeClass@AfterClass,使用這兩個凝視的方法。在該測試類中方法的測試以前、後各執行一次。而不是依照各個方法各執行一次。對於一些資源消耗大的項目,可以使用這兩個凝視。java

    • 此外Junit4還可以進行異常測試(@Test(expected=*.class))和超時測試(@Test(timeout=xxx))。並且提供了一個新的assert方法:assertEquals(Object[] expected, Object[] actual),用於比較數組數據。

JUnit3的使用

1 測試目標

package club.chuxing.junit3;

public class Calculator {
    public double add(double a, double b) {
        return a + b;
    }
    public double minus(double a, double b) {
        return a - b;
    }
    public double multiply(double a, double b) {
        return a * b;
    }
    public double divide(double a, double b) {
        return a / b;
    }
}

2 測試用例

TestCalculator.java:數組

package club.chuxing.junit3;

import junit.framework.TestCase;

public class TestCalculator extends TestCase{
    private Calculator calc;
    protected void setUp() throws Exception {
        super.setUp();
        calc = new Calculator();
    }
    protected void tearDown() throws Exception {
        super.tearDown();
    }
    public void testAdd() {
        assertEquals(3.0, calc.add(1, 2));
    }
    public void testMinus() {
        assertEquals(-1.0, calc.minus(1, 2));
    }
    public void testMultiply() {
        assertEquals(2.0, calc.multiply(1, 2));
    }
    public void testDivide() {
        assertEquals(0.5, calc.divide(1, 2));
    }
}

TestCalculator2.java:markdown

package club.chuxing.junit3;

import junit.framework.TestCase;

public class TestCalculator2 extends TestCase{
    private Calculator calc;
    protected void setUp() throws Exception {
        super.setUp();
        calc = new Calculator();
    }
    protected void tearDown() throws Exception {
        super.tearDown();
    }
    public void testAdd() {
        assertEquals(4.0, calc.add(2, 2));
    }
    public void testMinus() {
        assertEquals(0.0, calc.minus(2, 2));
    }
    public void testMultiply() {
        assertEquals(4.0, calc.multiply(2, 2));
    }
    public void testDivide() {
        assertEquals(1.0, calc.divide(2, 2));
    }
}

3 測試單元

package club.chuxing.junit3;

import junit.framework.Test;
import junit.framework.TestSuite;
import junit.textui.TestRunner;

public class TestAll extends TestSuite {
    public static Test suite() {
        TestSuite suite = new TestSuite();
        suite.addTestSuite(TestCalculator.class);
        suite.addTestSuite(TestCalculator2.class);
        return suite;
    }

    public static void main(String[] args) {
        TestRunner.run(suite());
    }
}

執行結果:ide

........
Time: 0.009

OK (8 tests)

這裏寫圖片描寫敘述

JUnit4的使用

CalculatorTest.javapost

package club.chuxing.junit4;

import static org.junit.Assert.*;

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

public class CalculatorTest {
    private static Calculator calc;
    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        calc = new Calculator();
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
    }

    @Test
    public void testAdd() {
        assertEquals(3, calc.add(1, 2), 0.00001);
    }

    @Test
    public void testMinus() {
        assertEquals(-1, calc.minus(1, 2), 0.00001);
    }

    @Test
    public void testMultiply() {
        assertEquals(2, calc.multiply(1, 2), 0.00001);
    }

    @Test
    public void testDivide() {
        assertEquals(0.5, calc.divide(1, 2), 0.00001);
    }
}

執行結果:
這裏寫圖片描寫敘述ui

相關文章
相關標籤/搜索