java单元测试asser_java单元测试(Junit)

JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework),供Java开发人员编写单元测试之用。 对不同性质的被测对象,如Class,Jsp,Servlet,Ejb等,Junit有不同的使用技巧。以下以Class测试为例讲解。

测试步骤:

1 导入junit4相关的jar包

(选中java工程,点击鼠标右键--->选择properties---->在窗口中选Java Build Path---->在右侧点击Add Library---->在弹出的窗口列表中选中Junit---->下一步----->Junit 4(我用的是Junit 4)---->finish)

2 可以在要测试的类new出测试类,选setUp,next选中要测试的方法,系统会 自动生成相应测试方法,修改相应的方法里内容。

也可以点击src--->右键--->new--->Test Junit Case

在test方法中写测试方法。

也可以自定义测试方法,不过要加上@Test的注解,方法格式为 public void testXXX()throws Exception{     }

例如:

@Test

public void testadd() throws Exception{

}

3 修改测试类(先new被测试类的实例,然后对方法进行单个测试(eg:assertEquals(8, calculator.getResult())))

4 run as junit测试(可以显示出Outline窗口,选中要测试的测试类,在Outline中选中要测试的方法右击run as Junit test)

代码实例:

被测试类:

public class Calculate {

//加法运算

public int sum(int x,int y){

return x+y;

}

//减法运算

public int sub(int x,int y){

return x-y;

}

}

测试类:

import static org.junit.Assert.*;

import junit.framework.TestCase;

import org.junit.Test;

public class CalculateTest extends TestCase{

Calculate calculate = new Calculate();//先new出被测试类的实例对象

@Override

protected void setUp() throws Exception {

// TODO Auto-generated method stub

super.setUp();

}

@Override

protected void tearDown() throws Exception {

// TODO Auto-generated method stub

super.tearDown();

}

@Test

public void testSum() {

assertEquals("测试加法", 4, calculate.sum(1, 3));//进行测试

}

@Test

public void testSub() {

assertEquals("测试减法", 2, calculate.sub(4, 3));//进行测试

}

}

大家有兴趣深入研究还可以了解:

Junit本身是围绕着两个设计模式来设计的:命令模式(JUnit Test Case)和集成模式(Junit Test Suite).

473bfbcb6cb37fc7bc67057b84f39bdc.png

简单的说:JUnit Test Case是进行单个的方法测试。而Junit Test Suite是进行集合(集合中可以包括多个Test Cas和Test Suite)测试的。

代码实例如下:

Test Case单个测试:

例如,我们要测试Money的Add方法,可以如下:

public class MoneyTest extends TestCase { //TestCase的子类

public void testAdd() { //把测试代码放在testAdd中

Money m12CHF= new Money(12, "CHF"); //本行和下一行进行一些初始化

Money m14CHF= new Money(14, "CHF");

Money expected= new Money(26, "CHF");//预期的结果

Money result= m12CHF.add(m14CHF); //运行被测试的方法

Assert.assertTrue(expected.equals(result)); //判断运行结果是否与预期的相同

}

}

如果测试一下equals方法,用类似的代码,如下:

public class MoneyTest extends TestCase { //TestCase的子类

public void testEquals() { //把测试代码放在testEquals中

Money m12CHF= new Money(12, "CHF"); //本行和下一行进行一些初始化

Money m14CHF= new Money(14, "CHF");

Assert.assertTrue(!m12CHF.equals(null));//进行不同情况的测试

Assert.assertEquals(m12CHF, m12CHF);

Assert.assertEquals(m12CHF, new Money(12, "CHF")); // (1)

Assert.assertTrue(!m12CHF.equals(m14CHF));

}

}

当要同时进行测试Add和equals方法时,可以将它们的各自的初始化工作,合并到一起进行,形成测试基础,用setUp初始化,用tearDown清除。如下:

public class MoneyTest extends TestCase {//TestCase的子类

private Money f12CHF;//提取公用的对象

private Money f14CHF;

protected void setUp() {//初始化公用对象

f12CHF= new Money(12, "CHF");

f14CHF= new Money(14, "CHF");

}

public void testEquals() {//测试equals方法的正确性

Assert.assertTrue(!f12CHF.equals(null));

Assert.assertEquals(f12CHF, f12CHF);

Assert.assertEquals(f12CHF, new Money(12, "CHF"));

Assert.assertTrue(!f12CHF.equals(f14CHF));

}

public void testSimpleAdd() {//测试add方法的正确性

Money expected= new Money(26, "CHF");

Money result= f12CHF.add(f14CHF);

Assert.assertTrue(expected.equals(result));

}

}

Test Suite集合测试:

public class MoneyTest extends TestCase {//TestCase的子类

....

public static Test suite() {//静态Test

TestSuite suite= new TestSuite();//生成一个TestSuite

suite.addTest(new MoneyTest("testEquals")); //加入测试方法

suite.addTest(new MoneyTest("testSimpleAdd"));

suite.addTest(new MoneyTest(MoneyTest.class)); //以类为参数

return suite;

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值