基于JUnit 3.8 的一个简单的测试程序

实现一个简单的计算

注:目标类和测试类要放在同一包下, JUnit单元测试基础要点

 

目标类:Calculator.java

 

package com.junit3_8;

public class Calculator {
	//加
	public int add(int a, int b)
	{
		return a + b ;
	}
	//减
	public int subtract(int a, int b)
	{
		return a - b ;
	}
	//乘
	public int multiply(int a, int b)
	{
		return a * b ;
	}
	//除
	public int divide(int a, int b)throws Exception
	{
		if (0 == b)
		{
			throw new Exception("除数不能为0");
		}
		return a / b ;
	}

}

 

 

测试类: CalculatorTest.java

 

package com.junit3_8;

import junit.framework.Assert;
import junit.framework.TestCase;

//测试类要继承TestCase
public class CalculatorTest extends TestCase{
	
	Calculator cal;
	
	//在“每个”测试方法执行之前被调用
	public void setUp()
	{
		//这段代码在这写比较方便,只写一次就够,
		//不用在每个方法里写,因为这个方法每次都被调用,生成不同的对象,供测试方法使用
		cal = new Calculator();
		//System.out.println("setUp");
	}
	
	//在“每个”测试方法执行之后被调用
	public void tearDown()
	{
		//System.out.println("testDown");
	}
	
	//测试方法:方法名要以test为开头,无参数,无返回类型
	public void testAdd()
	{
		//Calculator cal = new Calculator();
		int result = cal.add(1, 2);
		//第一个参数是预期的,第二个参数是真实的
		Assert.assertEquals(3, result);
		
	}
	
	public void testSubtract()
	{
		//Calculator cal = new Calculator();
		int result = cal.subtract(1, 2);
		//第一个参数是预期的,第二个参数是真实的
		Assert.assertEquals(-1, result);
		
	}
	
	public void testMultiply()
	{
		//Calculator cal = new Calculator();
		int result = cal.multiply(1, 2);
		//第一个参数是预期的,第二个参数是真实的
		Assert.assertEquals(2, result);
		
	}
	
	public void testDivide()
	{
		int result = 0;
		//Calculator cal = new Calculator();
		try 
		{
		    result = cal.divide(4, 2);
		    
		}
		catch(Exception e)
		{
			e.printStackTrace();
			//让测试失败
			Assert.fail();
		}
		//第一个参数是预期的,第二个参数是真实的
		Assert.assertEquals(2, result);
		
	}
	
	//除数为0的情况
	public void testDivideByZero()
	{
		Throwable th = null ;
		
		//Calculator cal = new Calculator();
		try 
		{
		    cal.divide(1, 0);
		    Assert.fail();
		}
		catch(Exception e)
		{
			th = e ;
			//e.printStackTrace();
		}
		
		//th 不为空 null
		Assert.assertNotNull(th);
		//第一个参数是预期的,第二个参数是真实的
		Assert.assertEquals(Exception.class, th.getClass());
		Assert.assertEquals("除数不能为0", th.getMessage());
		
	}
	
	//加了这个main方法,可以直接以 Java Application 方式运行 ,也可以以 JUnit Test 运行
	public static void main(String[] args)
	{
		//命令行形式打印
		junit.textui.TestRunner.run(CalculatorTest.class);
		
		//awt 界面方式显示
		//junit.awtui.TestRunner.run(CalculatorTest.class);
		
		//swing 界面方式显示
		//junit.swingui.TestRunner.run(CalculatorTest.class);
	}

}


 

 


1.调用 Assert.fail() 是让测试失败,该方法一般放在你认为不会到达的地方

2.这段代码让整个程序简便了许多
 Calculator cal;
 
 //在“每个”测试方法执行之前被调用
 public void setUp()
 {
  //这段代码在这写比较方便,只写一次就够,
  //不用在每个方法里写,因为这个方法每次都被调用,生成不同的对象,供测试方法使用
  cal = new Calculator();
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值