单元测试——基于JUnit

一、安装JUnit.jarhttps://github.com/junit-team/junit4/wiki/Download-and-Install二、JUnit的介绍 (一)①、继承于TestCase类的表示一个单元测试类。②、添加的测试方法必须以test开头,并且必须是public修饰符。(该测试函数不需要人为调用)③、JUnit的生命周期      setU
摘要由CSDN通过智能技术生成

一、安装JUnit.jar

https://github.com/junit-team/junit4/wiki/Download-and-Install

二、JUnit的介绍 (一)

①、继承于TestCase类的表示一个单元测试类。
②、添加的测试方法必须以test开头,并且必须是public修饰符。(该测试函数不需要人为调用)
③、JUnit的生命周期

      setUp():    初始化被测试的对象
         ↓
 各种测试方法     进行测试
         ↓
    tearDown()    进行扫尾工作

④、JUnit的测试函数
assertEquals():判断两个值或者对象是否相同。第一个参数表示期望值,第二个参数表示测试生成的实际值
assertTrue() or assertFalse() :判断某个值是否为true或者false
assertNull()  or assertNotNull():判断某个值是否为null
assertSame() or assertNotSame():判断两个对象是否为同一个对象

fail方法:(与assert不同之处在于,错误时候的异常是自定义的)
failNotEquals:有三个参数,第一个参数表示当错误时候的自定义的参数信息。第二个参数表示期望值。第三个参数表示测试生成的值。如果not equals 则抛异常。
failSame or failNotSame:同理。
failNull or failNotNull:同理

测试举例:
被测试类Adder:用来将两个整数相加
public class Adder{
  public int add(int a,int b){
      return a + b;
  }
}
测试类AdderTest
1、继承TestCase,然后重写setUp()和tearDown();
2、在setUp()创建测试类,创建测试方法testAdd()
public class AdderTest extends TestCase {
	Adder mAdder;
	@Override
	protected void setUp() throws Exception {
		// TODO Auto-generated method stub
		super.setUp();
		mAdder = new Adder();
	}
	
	public void testAdd(){
		assertEquals(7, mAdder.add(3, 4));
		assertEquals(10, mAdder.add(5, 5));
		
		assertEquals(-1, mAdder.add(5, 6));//该行错误,报错
	}

	@Override
	protected void tearDown() throws Exception {
		// TODO Auto-generated method stub
		super.tearDown();
		mAdder = null;
	}
	
}
然后发现测试方法的第三行出现了错误,错误的log
junit.framework.AssertionFailedError: expected:<-1> but was:<11>
<-1>表示期望值。
<11>表示测试的实际值。 
两个值不一致,导致错误。并且log页显示红色,如果成功显示绿色。

三、JUnit介绍(二)

需求:有时候我们需要测试多个类,有没有什么方法能够将多个测试类同时运行呢?
TestSuite:表示执行多个测试类的集合。
JUnit4TestAdapter:用来包装测试类。然后装入到TestSuit的集合中。
举例:首先我们建立了Adder类(加法)、Diver类(减法)。并分别创建他们的测试类。
public class MathSuite {

	//①、创建类,并创建public static Test suit()方法,测试时候会自动调用该方法
	public static Test suit(){
		//②、创建测试集合类
		TestSuite suite = new TestSuite();
		//③、将测试类用JUnit4TestAdapter封装并加入TestSuite
		suite.addTest(new JUnit4TestAdapter(AdderTest.class));
		suite.addTest(new JUnit4TestAdapter(Diver.class));
		return suite;
	}
}

四、实践

背景:家庭使用电费每月标准
当使用1~10度电则按1元/度收费。
当使用11~25度电按2 元/度收费。
当使用25~40按3 元/度收费
当超过40 按4 元/度收费。

以此建立价格:
public class ElectricCharge {
	
	public int total(int count){
		if (count > 1 && count <10){
			return 1 * count;
		}
		else if (count > 10 && count < 25){
			return 2 * count;
		}
		else if (count > 25 && count <40){
			return 3 * count;
		}
		else {
			return 4 * count;
		}
	}
}
然后进行单元测试:
public class ElectricChargeTest extends TestCase{
	ElectricCharge mElectricCharge;
	@Override
	protected void setUp() throws Exception {
		// TODO Auto-generated method stub
		super.setUp();
		mElectricCharge = new ElectricCharge();
	}

	public void testTotal(){
		//该行报错:因为当传入 负数 的时候返回值一律为0
		assertEquals(-1,mElectricCharge.total(-1));
		assertEquals(3*1, mElectricCharge.total(3));
		//该行报错:因为没有对 当 count == 10的时候做判断
		assertEquals(10*1, mElectricCharge.total(10));
		assertEquals(2*12, mElectricCharge.total(12));
	}
	@Override
	protected void tearDown() throws Exception {
		// TODO Auto-generated method stub
		super.tearDown();
		mElectricCharge = null;
	}
	
}
修改回来:
	public int total(int count){
		if (count > 1 && count <= 10){
			return 1 * count;
		}
		else if (count > 10 && count <= 25){
			return 2 * count;
		}
		else if (count > 25 && count <= 40){
			return 3 * count;
		}
		else if (count > 40){
			return 4 * count;
		}
		return 0;
	}










  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值