JUnit4简要说明

单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。

开发者编写一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。

通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。

JUnit的主要用途即是单元测试

使用eclipse自动生成JUnit4的测试代码:

public class Math {
	public Math(){
		System.out.println("init");
	}
	
	public int add(int a,int b){
		return a+b;
	}
}

右键需要测试的java类 -> New -> JUnit Test Case:

会弹出下面的选择框,注意要选择New JUnit 4 test,即JUnit4:

测试类的存放路径(Source folder)为:Test/src

测试类的存放包为(Package):com


第二个红框中的method stub需要特别说明一下:

setUpBeforClass:生成@BeforeClass注解方法

setUp:生成@Before注解方法

tearDownAfterClass:生成@AfterClass注解方法

tearDown:生成@After注解方法

先将这4个方法都选中,点击Next,可以选择需要生成测试代码的方法,包含当前类和父类的所有方法:


然后选择Finish,在选定的位置会自动生成测试类:

测试类的名称为:被测试类名称+Test


生成的类内容如下,测试方法的名称为:test+被测试方法名

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 MathTest {
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}

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

	@Before
	public void setUp() throws Exception {
	}

	@After
	public void tearDown() throws Exception {
	}

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

特别需要注意的地方

1,org.junit.Assert.*为静态引入,使用其中包含的静态方法时,不需要加上相应的类名,方便了不少

2,测试方法初始为测试失败,需要手动修改测试内容

public class MathTest {
	private Math math = new Math();
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		System.out.println("BeforeClass");
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
		System.out.println("AfterClass");
	}

	@Before
	public void setUp() throws Exception {
		System.out.println("Before");
	}

	@After
	public void tearDown() throws Exception {
		System.out.println("After");
	}
	
	@Test
	public void testAdd() {
		System.out.println("test1");
		assertEquals(5,math.add(2, 3));
	}
	
	@Test
	public void testAdd1() {
		System.out.println("test2");
		assertTrue(math.add(1, 1) == 2);
	}
}

选中测试类,右键 -> Run As -> JUnit Test


测试结果为:


BeforeClass
init
Before
test1
After
init
Before
test2
After
AfterClass

通过测试结果可以很清楚的看到注解的执行顺序为:@BeforeClass > @Before > @After > @AfterClass

每个测试方法运行前都会执行@Before注解方法,运行后都会执行@After注解方法

@BeforeClass只在测试类运行前执行,@AfterClass只在测试类执行结束后执行

这里面会有2个init,原因参见@Test注解说明



posted @ 2013-07-31 13:58  心意合一  阅读(178)  评论(0编辑  收藏  举报