JUnit学习笔记

首先下载JUnit所需的jar包,这里我把3和4的jar包都下了一份。

新建一个java工程,在BuildPath里引入jar包并关联源码:

在src下建junit包,新建Calc类:

package junit;

public class Calc {
	
	public int plus(int a, int b){
		return a + b;
	}
	
	public int divide(int a, int b){
		return a / b;
	}
	
}


 

计算器实现了加法和除法,然后新建Source Folder,与src下的目录相同,建一个junit的包,包下新建CalcTest类继承TestCase类。

其实包路径,包名和类名这些都没有强制的规定,只是一种约定,新建一个叫test的Source Folder是为了将测试类和源码分离,相同的包名和类名后加Test可以让我么方便的找到相应类的测试类。

好了继续我们的CalcTest,先来测试plus方法。新建一个方法testAdd,方法必须是public void 的无参数方法,方法名以test开头,这是必须的,否则写的方法不会被测试。代码如下:

package junit;

import junit.framework.TestCase;

public class CalcTest extends TestCase {

	public void testAdd() {
		Calc calc = new Calc();
		int result = calc.plus(3, 5);
		assertEquals(8, result);
	}

}



assertEquals方法可以接收各种类型的参数,不光是int型的。这个方法是比较两个参数是否有相同的值,其中第一个参数是你期望的值,第二个参数是实际得出的值。好了,运行一下看看。点右键,Run as => JUnit test,结果如下:

绿色的对勾表示期望值和实际得出的值是一样的,就是说count的值是8,那要是我们写成这样呢

assertEquals(9, count);



出错了,包括错误原因都很详细。

然后我们把参数改回正确的,再测试一下divide方法。

	public void testDivide(){
		Calc calc = new Calc();
		int result = calc.divide(10, 3);
		assertEquals(3, result);
	}


 

结果很简单,就不截图了。至此Calc的两个方法都测试完了。

这里我们发现一个问题,每一个方法里面都会创建一个Calc对象,这显然是一项重复的动作。我们当然不能允许这样的事情存在。这时就该setUp方法出场了。

先声明一个类变量:

private Calc calc;

 

然后右键,Source,重写setUp方法。

 

在方法里面进行calc的初始化:

	@Override
	protected void setUp() throws Exception {
		calc = new Calc();
	}


这样JUnit在进行每个测试方法之前都会执行一下setUp方法进行calc的初始化。注意是在执行每个测试方法之前都会执行一次,因为每执行一个测试方法都会生成一个CalcTest对象。所以你定义的一些非static的类变量在每个方法之间是不能共用的。

现在每个测试方法的初始化工作都可以扔掉了。代码像下面这样:

package junit;

import junit.framework.TestCase;

public class CalcTest extends TestCase {

	private Calc calc;
	
	@Override
	protected void setUp() throws Exception {
		calc = new Calc();
	}

	public void testAdd() {
		int result = calc.plus(3, 5);
		assertEquals(8, result);
	}

	public void testDivide(){
		int result = calc.divide(10, 3);
		assertEquals(3, result);
	}
}


有开始前就有结束后,tearDown方法就是在每个测试方法执行完毕后进行的善后工作,这里不再多说,大家试一下就知道。

 

有时候我们要执行多个测试类,那应该怎么做呢?显然一个一个点测试不是个好方法。我们可以在测试类的包上点右键,Run as => JUnit test,这样就会执行包下所有的测试类。那如果要执行其中的几个呢?这下就该TestSuit(测试套件)出场了。

我们把CalcTest复制一份,命名为CalcTest2吧,来模拟有多个测试类。然后新建一个类AllTest,写一个public static 的方法,名为suite,返回一个Test对象,这是必须的。代码如下:

package junit;

import junit.framework.Test;
import junit.framework.TestSuite;

public class AllTest {
	public static Test suite() {
		TestSuite suite = new TestSuite(AllTest.class.getName());
		suite.addTestSuite(CalcTest.class);
		suite.addTestSuite(CalcTest2.class);
		return suite;
	}
}


 

方法中我们定义了一个suite对象,并用addTestSuite方法将两个测试类都加入到suite中,最后返回suite对象。好了,执行一下:

 

两个测试类的都执行完了。suite对象还有addTest方法,可以添加一个Test对象,所以TestSuite是很灵活的,大家试一下。

JUnit3的最基础内容先到这里,下面接着看下JUnit4。

未完待续……………………

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值