首页 > 代码库 > junit入门实例

junit入门实例

1 junit测试用例代码

package junitTest;

import static org.junit.Assert.*;

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

/**
 * @ClassName TestCase
 * @Description junit测试用例演示
 * @date 2014年9月11日 上午9:57:45
 * 
 */
public class TestCase {

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

    /**
     * 
     * @Title        setUpBeforeClass
     * @Description  针对所有测试,只执行一次,在该class执行前执行,且必须为static void
     * @param
     * @return
     * @throws
     */
    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("in BeforeClass================");
    }

    /**
     * 
     * @Title        tearDownAfterClass
     * @Description  针对所有测试,只执行一次,在该class执行完后执行,且必须为static void
     * @param
     * @return
     * @throws
     */
    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("in AfterClass=================");
    }

    /**
     * 
     * @Title        before
     * @Description  初始化测试方法,每个测试方法都需要调用一次
     * @param
     * @return
     * @throws
     */
    @Before
    public void before() {
        System.out.println("in Before");
    }

    /**
     * 
     * @Title        after
     * @Description  测试方法执行完后释放资源,每个测试方法都需要调用一次
     * @param
     * @return
     * @throws
     */
    @After
    public void after() {
        System.out.println("in After");
    }

    @Test(timeout = 10000)
    public void testadd() {
        JDemo a = new JDemo();
        assertEquals(6, a.add(3, 3));
        System.out.println("in Test ----Add");
    }

    @Test
    public void testdivision() {
        JDemo a = new JDemo();
        assertEquals(3, a.division(6, 2));
        System.out.println("in Test ----Division");
    }

    @Ignore
    @Test
    public void test_ignore() {
        JDemo a = new JDemo();
        assertEquals(6, a.add(1, 5));
        System.out.println("in test_ignore");
    }

    @Test
    public void test_fail() {
        fail();
    }

}

/**
 * 
 * @ClassName    JDemo
 * @Description  测试类
 * @date         2014年9月11日 上午10:15:15
 *
 */
class JDemo extends Thread {

    int result;

    public int add(int a, int b) {
        try {
            sleep(1000);
            result = a + b;
        } catch (InterruptedException e) {
            System.out.println("add error");
        }
        return result;
    }

    public int division(int a, int b) {
        return result = a / b;
    }
}

2 java执行结果

in BeforeClass================
in Before
in Test ----Division
in After
in Before
in After
in Before
in Test ----Add
in After
in AfterClass=================

3 junit执行结果

4 执行顺序

一个测试类单元测试的执行顺序为:

@BeforeClass –> @Before –> @Test –> @After –> @AfterClass

每一个测试方法的调用顺序为:

@Before –> @Test –> @After

5 断言核心方法

assertArrayEquals(expecteds, actuals) 查看两个数组是否相等。
assertEquals(expected, actual) 查看两个对象是否相等。类似于字符串比较使用的equals()方法
assertNotEquals(first, second) 查看两个对象是否不相等。
assertNull(object) 查看对象是否为空。
assertNotNull(object) 查看对象是否不为空。
assertSame(expected, actual) 查看两个对象的引用是否相等。类似于使用“==”比较两个对象
assertNotSame(unexpected, actual) 查看两个对象的引用是否不相等。类似于使用“!=”比较两个对象
assertTrue(condition) 查看运行结果是否为true。
assertFalse(condition) 查看运行结果是否为false。
assertThat(actual, matcher) 查看实际值是否满足指定的条件
fail() 让测试失败

6 junit方法声明

@Before 初始化方法
@After 释放资源
@Test 测试方法,在这里可以测试期望异常和超时时间
@Ignore 忽略的测试方法
@BeforeClass 针对所有测试,只执行一次,且必须为static void
@AfterClass 针对所有测试,只执行一次,且必须为static void
@RunWith 指定测试类使用某个运行器
@Parameters 指定测试类的测试数据集合
@Rule 允许灵活添加或重新定义测试类中的每个测试方法的行为
@FixMethodOrder 指定测试方法的执行顺序

参考文件:http://blog.csdn.net/wangpeng047/article/details/9628449

junit入门实例