JUnit单元测试入门(三)--JUnit简单实例
2013-04-06 17:05
387 查看
JUnit单元测试入门(三)--JUnit简单实例
我们以一个简单的+-x÷计算为例,使用JUnit做一个简单的单元测试实例
我们实现一个简单的计算
注:目标类和测试类要放在同一包下, 这是JUnit单元测试基础要点
首先创建一个目标类(被测试对象):命名为Calculator.java
目标类已经创建好了,现在对其编写测试类:命名为CalculatorTest.java,将其放在与目标类同一目录路径下。
首先需要继承TestCase这个JUnit提供的类,然后就写一个带参数的构造方法,接着覆盖setUp(),teardown()这两个方法,然后自己写下void型而且不带参数的testXXX()方法对类别里面的逻辑方法进行测试。testXXX()后面的XXX值得是我要测试的方法的名字,比如说我要测试String类里面的equals方法,其相应的测试类名为TestString,测试方法为public void testEquals();setup()方法进行初始化工作,tearDown()进行销毁工作。
PS:本例中只对+-x÷计算设计了基本的测试方法,并未对目标类进行全面的测试,实际的测试中应该对目标类中的方法进行全面的测试,
例如,对+方法的测试,除了基本的两数相加,也许还应该设计:
1)如果传入两个浮点型参数进行add运算,
2)由于int型的范围是 -2147483648 ——2147483647,那么我们也可以设计传入int型数值的最大值2147483647与1,他们相加会出现什么情况,是等于2147483648吗? 这里告诉你,不是的,其实两者相加等于-2147483648,为什么是这样,留给大家自己研究。
3)还有许多的情景需要测试......
我们以一个简单的+-x÷计算为例,使用JUnit做一个简单的单元测试实例
我们实现一个简单的计算
注:目标类和测试类要放在同一包下, 这是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) { //实现接口TestListener的JUnit中就含有:junit.awtui.TestRunner、junit.swingui. TestRunner、junit.ui.TestRunner等,甚至客户用自己的类实现TestListener,从而达到多样化的目的。 //命令行形式打印 junit.textui.TestRunner.run(CalculatorTest.class); //它会自动运行CalculatorTest类中以test打头的所有测试用例方法 //awt 界面方式显示 //junit.awtui.TestRunner.run(CalculatorTest.class); //swing 界面方式显示 //junit.swingui.TestRunner.run(CalculatorTest.class); } }
首先需要继承TestCase这个JUnit提供的类,然后就写一个带参数的构造方法,接着覆盖setUp(),teardown()这两个方法,然后自己写下void型而且不带参数的testXXX()方法对类别里面的逻辑方法进行测试。testXXX()后面的XXX值得是我要测试的方法的名字,比如说我要测试String类里面的equals方法,其相应的测试类名为TestString,测试方法为public void testEquals();setup()方法进行初始化工作,tearDown()进行销毁工作。
PS:本例中只对+-x÷计算设计了基本的测试方法,并未对目标类进行全面的测试,实际的测试中应该对目标类中的方法进行全面的测试,
例如,对+方法的测试,除了基本的两数相加,也许还应该设计:
1)如果传入两个浮点型参数进行add运算,
2)由于int型的范围是 -2147483648 ——2147483647,那么我们也可以设计传入int型数值的最大值2147483647与1,他们相加会出现什么情况,是等于2147483648吗? 这里告诉你,不是的,其实两者相加等于-2147483648,为什么是这样,留给大家自己研究。
3)还有许多的情景需要测试......
相关文章推荐
- 超级简单的单元测试JUnit4入门实例
- JUnit自动化单元测试(二):简单测试实例讲解
- 【JUnit单元测试】JUnit入门简介+实例
- Junit3 junit.framework 单元测试,简单实例说明.
- 软件测试技术JUnit和单元测试入门简介--JUnit实例
- SpringTest框架JUnit单元测试用例获取ApplicationContext实例的方法
- linux上简单的JNI入门实例
- 简洁 DIV+CSS布局入门之二 ( DIV+CSS常用 常用CSS DIV+CSS实例 简单DIV+CSS DIV+CSS布局分析 DIV+CSS流程)
- 单元测试及框架简介 --junit、jmock、mockito、powermock的简单使用
- springMVC入门实例 springMVC简单入门
- vue服务端渲染简单入门实例
- Spring MVC Web简单入门实例
- 一个简单的Spring入门实例
- Hibernate入门2.简单的项目开发实例
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之一
- RabbitMQ入门之安装配置与简单实例----perfect
- Java 原生实现CallBack、JUnit 单元测试简单使用
- Spring框架的学习(零)-简单介绍与入门实例
- WEBRTC--简单入门实例
- 第四课 JBPM简单实例入门