Eclipse的Junit单元测试

使用单元测试的好处:方便查找到程序的问题所在之处。

JUnit的好处:无需编写main()方法,即可对程序进行测试

导包:导入Junit相关的jar包。实际测试中并未有下载,直接在Eclipse中设置即可。

右键项目 >> Bulid Path >> Add Libraries...

选择JUnit:

 选择合适的JUnit版本,这里我选择的是Junit5,Finally

 具体测试:

编写被测试类:

Calculator.java

package test;

public class Calculator {

    public int add(int a, int b) {
        return a + b;
    }

    public int sub(int a, int b) {
        return a - b;
    }
}

编写测试类:

CalculatorTest.java

package test;

import org.junit.Assert;
import org.junit.Test;

public class CalculatorTest {

    @Test //此处是必须有的
    public void testAdd() {
        Calculator c = new Calculator();
        int result = c.add(1, 2);
        Assert.assertEquals(result, 3);
    }

    @Test //此处是必须有的
    public void testSub() {
        Calculator c = new Calculator();
        int result = c.sub(2, 1);
        Assert.assertEquals(result, 1);
    }

}

于CalculatorTest.java中右键 >> run as >> JUnit Test 运行结果如图:

 JUnit的几种类似@Test的注解:

1. @Test:测试方法

  a)(expected = XXException.class)如果程序的异常和XXException.class 一样,则测试通过

  b)(timeout = 100)如果程序的执行能在100毫秒内完成,则测试通过

2. @Ignore:被忽略的测试方法,加上之后,暂时不运行此段代码

3. @Before:每一个测试方法之前都会运行。

4. @After:每一个测试方法之后都会执行。

5. @BeforeClass:方法必须是静态方法(并非用来测试静态方法的,而是进行测试的具体方法是静态的),所有测试开始之前运行。

6. @AfterClass:方法必须是静态的(同上),所有测试结束之后运行

实例:package test;

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

public class CalculatorTest {

    Calculator c = null;

    @BeforeClass
    public static void TestBeforeClass() {
        System.out.println("testBeforeClass()");
    }

    @Before
    public void testBefore() {
        System.out.println("testBefore()");
        c = new Calculator();
    }

    @Test
    public void testAdd() {
        int result = c.add(1, 2);
        System.out.println("testAdd()");
        Assert.assertEquals(result, 3);
    }

    @Test
    public void testSub() {
        int result = c.sub(2, 1);
        System.out.println("testSub()");
        Assert.assertEquals(result, 1);
    }

    @After
    public void testAfter() {
        System.out.println("testAfter()");
    }

    @AfterClass
    public static void testAfterClass() {
        System.out.println("testAfterClass()");
    }

}
//输出:

/*
* testBeforeClass()
* testBefore()
* testAdd()
* testAfter()
*
* testBefore()
* testSub()
* testAfter()
* testAfterClass()
*/

原文地址:https://www.cnblogs.com/MXming/p/14293543.html