Junit4

    项目中我们经常要进行测试,我们可以写System.out.println();语句或者main方法进行测试,但是 当类的数量很多的时候,比如达到几百个类的时候,每个类中都写一个main方法进行测试的话,测试的效率会很低,比如不能一起运行,大多数情况下要人为地观察输出是否正确。

   我们开发的项目成本最高的阶段是维护阶段,进行单元测试可应付将来的实现变化,另外,还能告诉开发组的其他成员,我开发的功能没有错误。

    如何建立Junit测试呢,首先建立一个类,比如com.xuan.junit包下的T类,如下所示:

package com.xuan.junit;

public class T {
	public  int add(int x,int y){
		return x+y;
	}
}

一般在com.xuan.junit包下建立test包,即com.xuan.junit.test包,建立的测试类一般起名:类名Test,如上面的类则起名:TTest。

在这个com.xuan.junit.test包下新建一个Junit Test Case,如下:

package com.xuan.junit.test;

import org.junit.Test;
import static org.junit.Assert.*;
import com.xuan.junit.T;

public class TTest {

	@Test
	public void testAdd() {
		int z=new T().add(5,3);
		/*assertEquals(8, z);
		assertTrue(z>3);
		assertTrue("z too small",z>10);//字符串是提示用的
*/	
		/*assertThat(z, is(8));*/
	}

}

当然你建立的时候要引入Junit4的Jar包,在这里,可以用Eclipse或者MyEclipse自带的jar包,在建立Junit Test Case的时候会有提示你添加Jar包的。

当测试的时候可以直接点击某个类或者某个类中的方法,右键选择“Run As”-》“Junit Test”,运行的时候如果没有错误就会出现绿色的条形,如果编译不通过出现错误就会显示红色的条形。


使用hamcrest断言,要导入相应的Jar包,主要上网下载,使用assertThat的匹配代码如下:

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" ) );


这里需要解释下Failure和Error的区别:Failure是指程序中断言的结果与运行的结果不符,即测试失败,而Error则是测试的程序本身出错。

另外附上有关于Junit4的Annotation:

1.        @Test: 测试方法

a)        (expected=XXException.class)

b)       (timeout=xxx)

2.        @Ignore: 被忽略的测试方法

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

4.        @After: 每一个测试方法之后运行

5.        @BeforeClass: 所有测试开始之前运行

6.        @AfterClass: 所有测试结束之后运行

也可以选择同时运行多个测试类,选择“run configuration”,然后就可以在里面选择要运行的类或者方法。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值