热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

java编程之单元测试(Junit)实例分析(附实例源码)

这篇文章主要介绍了java编程之单元测试(Junit),结合实例形式较为详细的分析总结了Java单元测试的原理、步骤及相关注意事项,并附带了完整代码供读者下载参考,需要的朋友可以参考下

本文实例讲述了java编程之单元测试。分享给大家供大家参考,具体如下:

完整实例代码代码点击此处本站下载。

在有些时候,我们需要对我们自己编写的代码进行单元测试(好处是,减少后期维护的精力和费用),这是一些最基本的模块测试。当然,在进行单元测试的同时也必然得清楚我们测试的代码的内部逻辑实现,这样在测试的时候才能清楚地将我们希望代码逻辑实现得到的结果和测试实际得到的结果进行验证对比。

废话少说,上代码:

首先创建一个java工程,在工程中创建一个被单元测试的Student数据类,如下:

package com.phicomme.hu; 
public class Student 
{ 
 private String name; 
 private String sex; 
 private int high; 
 private int age; 
 private String school; 
 public Student(String name, String sex ,int high, int age, String school) 
 { 
  this.name = name; 
  this.sex = sex; 
  this.high = high; 
  this.age = age; 
  this.school = school; 
 } 
 public String getName() 
 { 
  return name; 
 } 
 public void setName(String name) 
 { 
  this.name = name; 
 } 
 public String getSex() 
 { 
  return sex; 
 } 
 public void setSex(String sex) 
 { 
  this.sex = sex; 
 } 
 public int getHigh() 
 { 
  return high; 
 } 
 public void setHigh(int high) 
 { 
  this.high = high; 
 } 
 public int getAge() 
 { 
  return age; 
 } 
 public boolean setAge(int age) 
 { 
  if (age >25) 
  { 
   return false; 
  } 
  else 
  { 
   this.age = age; 
   return true; 
  }     
 } 
 public String getSchool() 
 { 
  return school; 
 } 
 public void setSchool(String school) 
 { 
  this.school = school; 
 } 
}

在eclipse下单元测试这个类:

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

这样Junit 4包就导完了,接下来就是创建测试类:

将测试类和被测试类放在不同的包中(也可以放在同一个包中,此处只是为了区别),代码如下:

测试类1:

package com.phicomme.test; 
import com.phicomme.hu.Student; 
import junit.framework.TestCase; 
public class StudentTest01 extends TestCase 
{ 
 Student testStudent; 
 //此方法在执行每一个测试方法之前(测试用例)之前调用 
 @Override 
 protected void setUp() throws Exception 
 { 
  // TODO Auto-generated method stub 
  super.setUp(); 
  testStudent = new Student("djm", "boy", 178, 24, "华东政法"); 
  System.out.println("setUp()"); 
 } 
 //此方法在执行每一个测试方法之后调用 
 @Override 
 protected void tearDown() throws Exception 
 { 
  // TODO Auto-generated method stub 
  super.tearDown(); 
  System.out.println("tearDown()"); 
 } 
 //测试用例,测试Person对象的getSex()方法 
 public void testGetSex() 
 { 
  assertEquals("boy", testStudent.getSex()); 
  System.out.println("testGetSex()"); 
 } 
 //测试Person对象的getAge()方法 
 public void testGetAge() 
 { 
  assertEquals(24, testStudent.getAge()); 
  System.out.println("testGetAge()"); 
 } 
}

测试类2:

package com.phicomme.test; 
import junit.framework.TestCase; 
import com.phicomme.hu.Student; 
public class StudentTest extends TestCase 
{ 
 private Student testStudent; 
 @Override 
 protected void setUp() throws Exception 
 { 
  // TODO Auto-generated method stub 
  super.setUp(); 
  testStudent = new Student("steven_hu", "boy", 170 , 23, "上海理工"); 
 } 
 @Override 
 protected void tearDown() throws Exception 
 { 
  // TODO Auto-generated method stub 
  super.tearDown(); 
 } 
 public void testSetage() 
 { 
  assertTrue(testStudent.setAge(21)); 
 } 
 public void testGetSchool() 
 { 
  //预期值和实际值不一样,测试时出现失败(Failure) 
  assertEquals("南昌大学", testStudent.getSchool()); 
 } 
 public void testGetName() 
 { 
  assertEquals("hdy", testStudent.getName()); 
 } 
}

当然,如果同时需要一起测试以上这两个测试类,可以通过TestSuite类实现,它相当于是一个套件,可以把所有测试类添进来一起运行测试;

代码如下:

package com.phicomme.test; 
import com.phicomme.hu.StudentTest02; 
import junit.framework.Test; 
import junit.framework.TestSuite; 
public class AllTest 
{ 
 //static PersonTest p = new PersonTest(); 
 //static PersonTest p1 = new PersonTest(); 
 public static Test suite() 
 { 
  TestSuite suite = new TestSuite("Test for com.phicomme.test"); 
  //suite.addTest(p); 
  //suite.addTest(p1); 
  suite.addTestSuite(StudentTest.class); 
  suite.addTestSuite(StudentTest01.class); 
  return suite; 
 } 
}

最后,分别测试以上三个类(选中需要测试的类---->鼠标右键---->Run As---->Junit Test):

StudentTest类的测试结果图:

StudentTest01类的测试结果图:

AllTest类的测试结果图:

有关java的测试就讲到这里,希望对大家有帮助,有时间也会接着讲讲有关android的单元测试,和在手机上实现编写一个UI界面替代eclipse如上图中的测试界面;

希望本文所述对大家Java程序设计有所帮助。


推荐阅读
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • 本文详细介绍如何使用arm-eabi-gdb调试Android平台上的C/C++程序。通过具体步骤和实用技巧,帮助开发者更高效地进行调试工作。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • CSS 布局:液态三栏混合宽度布局
    本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文介绍了如何使用jQuery根据元素的类型(如复选框)和标签名(如段落)来获取DOM对象。这有助于更高效地操作网页中的特定元素。 ... [详细]
  • 本文将详细介绍如何使用剪映应用中的镜像功能,帮助用户轻松实现视频的镜像效果。通过简单的步骤,您可以快速掌握这一实用技巧。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文介绍如何在 Xcode 中使用快捷键和菜单命令对多行代码进行缩进,包括右缩进和左缩进的具体操作方法。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • 本文总结了Java程序设计第一周的学习内容,涵盖语言基础、编译解释过程及基本数据类型等核心知识点。 ... [详细]
author-avatar
手机用户2502931241
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有