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