一、JUnit简介。
JUnit是一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。
二、第一个JUnit测试。
首先应该去JUnit官网 ( http://junit.org/ ) 把最新版的JUnit下载下来,然后去hamcrest ( http://code.google.com/p/hamcrest/ ) 官网把hamcrest下载下来,hamcrest是为了支持JUnit4新特性所需要的。
(1) 在Eclipse中创建新项目:JUnit4。然后添加要被测试的类:T。
- package com.bjsxt.junit4;
- public class T {
- public int add(int x, int y) {
- return x + y;
- }
- public int divide(int x, int y) {
- return x/y;
- }
- }
(3) 添加测试类: 假若被测试的类的包为com.bjsxt.junit4,那么测试类的包名则为com.bjsxt.junit4.test,测试类的名字为( 被测类名Test ) 。
- package com.bjsxt.junit4.test;
- import static org.junit.Assert.*;
- import static org.hamcrest.Matchers.*;
- import org.junit.After;
- import org.junit.Before;
- import org.junit.BeforeClass;
- import org.junit.AfterClass;
- import org.junit.Test;
- import com.bjsxt.junit4.T;
- public class TTest {
- @BeforeClass
- public static void beforeClass() {
- System.out.println("beforeClass");
- }
- @AfterClass
- public static void afterClass() {
- System.out.println("afterClass");
- }
- @Before
- public void before() {
- System.out.println("before");
- }
- @Test
- public void testAdd() {
- int z = new T().add(5, 3);
- assertThat(z, is(8));
- assertThat(z ,allOf(greaterThan(5), lessThan(10)));
- //int a = 8/0;
- }
- @Test(expected=java.lang.ArithmeticException.class, timeout=100)
- public void testDivide() {
- int z = new T().divide(8, 0);
- }
- @After
- public void after() {
- System.out.println("after");
- }
- }
以下对上面程序进行解释说明
三、说明
(1) hamcrest断言的使用
- assertThat( n, allOf( greaterThan(1), lessThan(15) ) );
assertThat( n, anyOf( greaterThan(16), lessThan(8) ) );
assertThat( n, anything() );
assertThat( str, is( "bjsxt" ) );
assertThat( str, not( "bjxxt" ) );
- assertThat( str, containsString( "bjsxt" ) );
assertThat( str, endsWith("bjsxt" ) );
assertThat( str, startsWith( "bjsxt" ) );
assertThat( n, equalTo( nExpected ) );
assertThat( str, equalToIgnoringCase( "bjsxt" ) );
assertThat( str, equalToIgnoringWhiteSpace( "bjsxt" ) );
- assertThat( d, closeTo( 3.0, 0.3 ) );
assertThat( d, greaterThan(3.0) );
assertThat( d, lessThan (10.0) );
assertThat( d, greaterThanOrEqualTo (5.0) );assertThat( d, lessThanOrEqualTo (16.0) );
- assertThat( map, hasEntry( "bjsxt", "bjsxt" ) );
assertThat( iterable, hasItem ( "bjsxt" ) );
assertThat( map, hasKey ( "bjsxt" ) );assertThat( map, hasValue ( "bjsxt" ) );
(2) JUnit视图
Failure是指测试失败
Error是指测试程序本身出错
(3) JUnit4 Annotation
- @Test: 测试方法
(timeout=xxx)
- @Ignore: 被忽略的测试方法
- @Before: 每一个测试方法之前运行
- @After: 每一个测试方法之后运行
- @BeforeClass: 所有测试开始之前运行,必须为静态方法
- @AfterClass: 所有测试结束之后运行,必须为静态方法
- 类放在test包中
- 类名用XXXTest结尾
- 方法用testMethod命名
右键项目->Run as->Run configration->JUnit 中进行配置