Junitユニットテスト

12793 ワード

Junitはユニットテスト、複数のパラメータのユニットテスト、パッケージユニットテストを提供します.
 
例えばCalculatorクラスを書きました
package test_junit;

public class Calculator {
    private static int result; //

    public void add(int n) {
        result = result + n;
    }

    public void substract(int n) {
        result = result - 1; // Bug:   result =result-n
    }

    public void multiply(int n) {
    } //  

    public void divide(int n) {
        result = result / n;
    }

    public void square(int n) {
        result = n * n;
    }

    public void squareRoot(int n) {
        for (;;)
            ; // Bug :  
    }

    public void clear() { //  
        result = 0;
    }

    public int getResult() {
        return result;
    }
}

書き終わったらテストしたい:
テストしたいクラスを右クリックnew,junit,テストしたい方法を選択
testクラスを生成し、このテストクラスを完全に補充します.
package test_junit;

import static org.junit.Assert.*;

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

public class CalculatorTest {

    private static Calculator calculator = new Calculator();

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

    @Before
    public void setUp() throws Exception {
    }

    @After
    public void tearDown() throws Exception {
    }

    @Test
    public void testAdd() {
        calculator.add(2);
        calculator.add(3);
        assertEquals(5, calculator.getResult());
        // fail("Not yet implemented");
    }

    @Ignore
    public void testSubstract() {
        calculator.clear();
        calculator.add(10);
        calculator.substract(2);
        assertEquals(8, calculator.getResult());
    }

    @Test
    public void testMultiply() {
        // fail("Not yet implemented");
    }

    @Test
    public void testDivide() {
        calculator.clear();
        calculator.add(8);
        calculator.divide(2);
        assertEquals(4, calculator.getResult());
    }

    @Test(timeout = 12)
    public void testSquareRoot() {

        calculator.squareRoot(8);

        // assertEquals(4,calculator.getResult());
    }

    //@Test(expected = ArithmeticException.class)
    @Test
    public void divideByZero() {
        calculator.divide(0);

    }
}

このクラスを実行すると、エラーの可視化効果が表示されます.
このクラスのメソッドに複数のテストデータがある場合は、このように書くことができます.
package test_junit;

import static org.junit.Assert.*;

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

import static org.junit.Assert.assertEquals;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.junit.runners.Parameterized;

import org.junit.runners.Parameterized.Parameters;

import java.util.Arrays;

import java.util.Collection;

@RunWith(Parameterized.class)
public class CalculatorTest2 {

    private static Calculator calculator = new Calculator();

    private int param;

    private int result;

    @Parameters
    public static Collection data() {

        return Arrays.asList(new Object[][] {

        { 2, 4 },

        { 0, 0 },

        { -3, 9 },

        });

    }

    //

    public CalculatorTest2(int param, int result) {

        this.param = param;

        this.result = result;

    }

    @Test
    public void square() {

        calculator.square(param);

        assertEquals(result, calculator.getResult());

    }

}

このとき、10個以上のテストクラスを書いたかもしれませんが、1つ1つは面倒です.このとき、欲しいいくつかのテストクラスを複数選択すると、右ボタンnew->junit->Junit Test Suitsでパッケージできます.
package test_junit;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

@RunWith(Suite.class)
@SuiteClasses({ CalculatorTest.class, CalculatorTest2.class })
public class AllTests {

}

このクラスを直接実行すれば、一緒にテストできます.
 
 
参照先:http://blog.csdn.net/andycpp/article/details/1329218