JUnit单元测试入门简介+实例

合集下载

Junit4单元测试框架的常用方法介绍

Junit4单元测试框架的常用方法介绍

Junit4单元测试框架的常⽤⽅法介绍Junit 介绍:Junit是⼀套框架(⽤于JAVA语⾔),由 Erich Gamma 和 Kent Beck 编写的⼀个回归测试框架(regression testing framework),即⽤于⽩盒测试。

本⽂介绍的内容:1 Junit Myeclipse测试类的⽣成2 JUnit 4 常⽤的⼏个annotation 介绍与使⽤ (@Before @After @Test @Ignore @BeforeClass @AfterClass)3 常⽤的断⾔介绍4 特殊的处理(限时测试,异常测试)5 参数化配置(@Parameters)准备测试代码测试的⽅法(正确、错误⽅法、死循环、抛异常)LogicServicepackage com.logic;public class LogicService {public int add(int x ,int y){ //加法return x+y;}public int sub(int x ,int y){ //减法return x-y;}public int div(int x ,int y){ //除法return x/y;}public int div2(int x ,int y){ //除法做了异常判断try {int z = x/y;} catch (Exception e) {e.printStackTrace();}return x/y;}public void loop(int x ,int y){ //死循环for(;;)x=y;}public void unCompleted(int x ,int y){ //未完成的模块//还在开发中}}⼀ Myeclipse测试类的⽣成1 对需要测试的类点右键 NEW ⼀个Junit Test Case2 点击NEXT注意 1 选择NEW Junit 4 test2 source folder 是默认会填写上之前右键NEW的那个类,如果不是的话,请⾃⾏进⾏修改3 package 默认会填写当前的包名个⼈建议重新开个测试包-即在包后⾯加上.test 表⽰是单元测试⽤例专⽤包与源代码分离4 name 默认会在之前右键NEW的那个类的基础的后⾯加上Test 如果不是的话,建议⾃⾏进⾏修改,便于标⽰5 初始化的⽅法,我⼀般会勾上个setUp,这个请随意。

(2).mybatis单元测试(junit测试)

(2).mybatis单元测试(junit测试)

(2).mybatis单元测试(junit测试)⼀、Junit使⽤步骤:1、创建测试⽬录,(src、测试⽬录是test)2、在测试⽬录test中创建与src中相同的包名3、为需要测试的类创建测试类,例如:UsersMapper,测试类是UsersMapperTest4、为被测试类(UsersMapper)中的需要测试的⽅法在测试类型创建相应的⽅法。

⽐如,需要测试findById⽅法,那么则测试类中创建findById⽅法,测试⽅法的要求a、不能有返回值、不能有参数b、需要只⽤@Test注解对该⽅法进⾏注解。

5、在测试⽅法中,使⽤断⾔对结果进⾏判断,assert,判断⼀。

单元测试1. 在项⽬下创建⼀个⽬录test,之后将test右键Mark Directory as(标记⽬录为)->测试源根2. 在test下创建类,类的包名与被测试类的包名⼀致,在被测试类后⾯加上Test,例如:ersMapper与ersMapperTest。

在测试⽅法前@Test,导⼊junit测试路径,点击确定即可,之后maven后台下载。

3. Mybatis的核⼼对象:SqlSessionFactoryBuilder , SqlSessionFactory , SqlSession。

(SqlSessionFactoryBuilder创建⼯⼚,⼀般只⽤⼀次。

SqlSessionFactory是⼯⼚,⼯⼚长期存在。

SqlSession例如是⼯⼚造的汽车,有时间期限,即使⽤完⼯⼚依旧存在。

) SqlSeessionFactoryBuilder⽤过即丢,可⽤来创建多个SqlSessionFactory实例,并提供多个build⽅法的重载来构建SqlSessionFactory. SqlSession(⼀般瞬时、短链接,也可以长连接,⽤完关闭)build(InputStream inputStream,String environment,Properties properties)build(Reader reader,String environment,Properties properties)build(Configuration config)配置信息以三种形式提供给 SqlessionFactoryld 的build ⽅法:InputStream(字节流) Reader (字符流) Configuration (类)读取XML⽂件构造⽅式:String CONFIG_FILE = "mybatis-config.xml";InputStream resourceAsStream = Resources.getResourceAsStream(CONFIG_FILE);SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder().build(resourceAsStream);//⾮静态成员,实例成员,成员变量,通过构造⽅法初始化。

junit测试实验报告

junit测试实验报告

junit测试实验报告
《Junit测试实验报告》
在软件开发过程中,测试是非常重要的一环。

而Junit作为一个广泛应用的Java 单元测试框架,可以帮助开发人员快速、方便地进行测试。

本文将通过一个实验报告,介绍Junit测试的基本原理和使用方法。

实验目的:
1. 了解Junit测试框架的基本原理和使用方法
2. 掌握Junit测试的常用注解和断言方法
3. 通过实际示例,展示Junit测试的实际应用
实验内容:
本次实验将以一个简单的Java类为例,演示如何使用Junit进行单元测试。

该Java类包含一个简单的方法,用于计算两个整数的和。

实验步骤:
1. 导入Junit测试框架
2. 创建一个测试类,并在该类中编写测试方法
3. 使用Junit的注解和断言方法,对目标方法进行测试
4. 运行测试,并查看测试结果
实验结果:
经过测试,目标方法运行正常,测试结果符合预期。

实验总结:
通过本次实验,我们了解了Junit测试框架的基本原理和使用方法。

Junit提供了丰富的注解和断言方法,可以帮助开发人员编写简洁、高效的测试代码。


过Junit测试,可以有效地提高软件质量,减少bug的产生。

在实际开发中,我们应该充分利用Junit测试框架,编写完善的测试用例,保证软件的稳定性和可靠性。

同时,我们也应该不断学习和探索,掌握更多的测试技巧和方法,为软件开发贡献自己的力量。

总之,Junit测试是软件开发过程中不可或缺的一部分,希望通过本次实验,能够对Junit测试有更深入的了解,为我们的软件开发工作带来更大的帮助。

Demo002IDEA中Junit单元测试的使用(初级篇)

Demo002IDEA中Junit单元测试的使用(初级篇)

Demo002IDEA 中Junit 单元测试的使⽤(初级篇)推荐JUnit 视频教程:。

1.基本理论1.1 单元测试单元测试⼜称模块测试,属于⽩盒测试,是最⼩单位的测试。

模块分为程序模块和功能模块。

功能模块指实现了⼀个完整功能的模块(单元),⼀个完整的程序单元具备输⼊、加⼯和输出三个环节。

⽽且每个程序单元都应该有正规的规格说明,使之对其输⼊、加⼯和输出的关系做出名明确的描述。

JUnit 是⼀个回归测试框架(regression testing framework )。

Junit 测试是程序员测试,即所谓⽩盒测试,因为程序员知道被测试的如何(How )完成功能和完成什么样(What )的功能。

Junit 是⼀套框架,继承TestCase 类,就可以⽤Junit 进⾏⾃动测试了。

1.2 什么是Junit①JUnit 是⽤于编写可复⽤测试集的简单框架,是xUnit 的⼀个⼦集。

xUnit 是⼀套基于测试驱动开发的测试框架,有PythonUnit 、CppUnit 、JUnit 等。

②Junit 测试是程序员测试,即所谓⽩盒测试,因为程序员知道被测试的软件如何(How )完成功能和完成什么样(What )的功能。

③多数Java 的开发环境都已经集成了JUnit 作为单元测试的⼯具,⽐如IDEA ,Eclipse 等等。

④JUnit 官⽹:1.3 为什么要使⽤单元测试①测试框架可以帮助我们对编写的程序进⾏有⽬的地测试,帮助我们最⼤限度地避免代码中的bug ,以保证系统的正确性和稳定性。

②很多⼈对⾃⼰写的代码,测试时就简单写main ,然后sysout 输出控制台观察结果。

这样⾮常枯燥繁琐,不规范。

缺点:测试⽅法不能⼀起运⾏,测试结果要程序猿⾃⼰观察才可以判断程序逻辑是否正确。

③JUnit 的断⾔机制,可以直接将我们的预期结果和程序运⾏的结果进⾏⼀个⽐对,确保对结果的可预知性。

1.4 测试覆盖评测测试过程中已经执⾏的代码的多少。

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

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

java编程之单元测试(Junit)实例分析(附实例源码)本⽂实例讲述了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){ = name;this.sex = sex;this.high = high;this.age = age;this.school = school;}public String getName(){return name;}public void setName(String 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;//此⽅法在执⾏每⼀个测试⽅法之前(测试⽤例)之前调⽤@Overrideprotected void setUp() throws Exception{// TODO Auto-generated method stubsuper.setUp();testStudent = new Student("djm", "boy", 178, 24, "华东政法");System.out.println("setUp()");}//此⽅法在执⾏每⼀个测试⽅法之后调⽤@Overrideprotected void tearDown() throws Exception{// TODO Auto-generated method stubsuper.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;@Overrideprotected void setUp() throws Exception{// TODO Auto-generated method stubsuper.setUp();testStudent = new Student("steven_hu", "boy", 170 , 23, "上海理⼯");}@Overrideprotected void tearDown() throws Exception{// TODO Auto-generated method stubsuper.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程序设计有所帮助。

软件测试实验-JUnit单元测试

软件测试实验-JUnit单元测试

第三章 JUnit单元测试实验1 开始使用JUnit【实验目的】1、学习使用JUnit4.X进行单元测试;2、掌握JUnit4.X编写测试代码的方法;3、应用JUnit进行单元测试,掌握最佳实践编写测试代码。

【实验环境】1、Windows环境,MyEclipse或Eclipse,JUnit4.x。

2、每个学生操作1台电脑。

【实验原理】JUnit是一个开源的Java编程语言的单元测试框架,最初由 Erich Gamma 和 Kent Beck 编写。

Junit测试是一种白盒测试工具。

JUnit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。

具有JUnit经验对于应用“测试驱动开发(TDD)”的程序开发模型是非常重要的。

JUnit本质上是一套框架,即开发者制定了一套条条框框,遵循这此条条框框要求编写测试代码,如继承某个类,实现某个接口,就可以用JUnit进行自动测试了。

由于JUnit相对独立于所编写的代码,可以测试代码的编写可以先于实现代码的编写,XP 中推崇的 test first design的实现有了现成的手段:用JUnit写测试代码,写实现代码,运行测试,测试失败,修改实现代码,再运行测试,直到测试成功。

以后对代码的修改和优化,运行测试成功,则修改成功。

Java 下的 team 开发,采用 cvs(版本控制) + ant(项目管理) + JUnit (集成测试) 的模式时,通过对ant的配置,可以很简单地实现测试自动化。

【实验内容】根据下面的实验步骤完成实验。

1、JUnit包下载。

(1) 从下载Junit,打开该链接,会有一个下载链接,下载Junit4.X.zip,保存在用户机的文件系统中。

(2) 解包Junit-4.X,得到如图3-1的解包文件。

图1 Junit解包文件文件/目录描述junit.jar JUnit框架结构、扩展和测试运行器的二进制发布src.jar JUnit的源代码,包括一个 Ant 的buildfile文件junit 是个目录,内有JUnit自带的用JUnit编写的测试示例程序javadoc JUnit完整的API文档doc 一些文档和文章,包括“Test Infected: Programmers Love Writing Tests”和其它一些资料,可以帮助我们入门。

(完整版)Junit4教程(实验指导书)

(完整版)Junit4教程(实验指导书)

《软件测试技术》上机指导书之(一)使用JUNIT4进行单元测试JUnit4概述 (2)在Eclipse中使用JUnit4进行单元测试(初级篇) (5)在Eclipse中使用JUnit4进行单元测试(中级篇) (14)在Eclipse中使用JUnit4进行单元测试(高级篇) (16)实验目的:单元测试。

实验学时:4(2学时学习,2学时检查)实验要求:掌握JUNIT的使用方法。

检查要求:按学号每5人一组,分组检查掌握情况。

(1)初始成绩:1人为优秀,2-3人良好,1-2人中等。

组内推荐。

(2)最差的那个同学演示答辩,其成绩决定组内其他同学的成绩的整体水平。

(3)组内同学的成绩跟随答辩同学的成绩上下浮动。

张金荣重庆理工大学计算机科学与工程学院2013年3月9日JUnit4概述JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写.先简单解释一下什么是Annotation,这个单词一般是翻译成元数据。

元数据是什么?元数据就是描述数据的数据。

也就是说,这个东西在Java里面可以用来和public、static等关键字一样来修饰类名、方法名、变量名。

修饰的作用描述这个数据是做什么用的,差不多和public描述这个数据是公有的一样。

想具体了解可以看Core Java2。

废话不多说了,直接进入正题。

我们先看一下在JUnit 3中我们是怎样写一个单元测试的。

比如下面一个类:public class AddOperation {public int add(int x,int y){return x+y;}}我们要测试add这个方法,我们写单元测试得这么写:import junit。

framework。

TestCase;import static org。

junit.Assert。

*;public class AddOperationTest extends TestCase{public void setUp() throws Exception {}public void tearDown() throws Exception {}public void testAdd() {System.out。

Java单元测试:JUnit和Mockito的使用指南

Java单元测试:JUnit和Mockito的使用指南

Java单元测试:JUnit和Mockito的使用指南引言:在软件开发过程中,单元测试是一个至关重要的环节。

通过对代码的逐个单元进行测试,可以确保代码的质量和稳定性。

在Java开发中,JUnit和Mockito是两个常用的工具,它们可以帮助开发者更轻松地进行单元测试。

本文将为您介绍JUnit和Mockito的使用指南,帮助您更好地掌握这两个工具的功能和用法。

一、JUnit简介JUnit是一个Java语言的单元测试框架,它提供了一系列的注解和断言方法,方便开发者编写和执行单元测试。

JUnit的核心思想是“测试驱动开发”(Test-Driven Development,TDD),即在编写代码之前先编写测试用例,通过不断迭代的方式来开发和完善代码。

1.1 JUnit的安装和配置要使用JUnit,首先需要将JUnit的相关库文件导入到项目中。

可以通过Maven或Gradle等构建工具来管理依赖,也可以手动下载并导入JUnit的jar包。

导入完成后,就可以在代码中使用JUnit的注解和断言方法。

1.2 编写测试用例在JUnit中,每个测试用例都是一个独立的方法。

可以使用@Test注解来标记测试方法,JUnit会自动执行被标记的方法,并判断测试结果是否符合预期。

例如:```@Testpublic void testAddition() {int result = Calculator.add(2, 3);assertEquals(5, result);}```上述代码中,我们使用@Test注解标记了一个测试方法,该方法调用了被测试的Calculator类的add方法,并使用断言方法assertEquals来判断结果是否等于预期值。

如果测试通过,JUnit会输出“OK”;如果测试失败,JUnit会输出错误信息。

1.3 JUnit的高级特性除了基本的注解和断言方法外,JUnit还提供了一些高级特性,如参数化测试、测试套件和测试运行器等。

JUnit单元测试基础基础实验

JUnit单元测试基础基础实验

实验1:JUnit单元测试基础董瑞志常熟理工学院软件工程系实验目的理解手工编写单元测试的基本方法;编写简单的基于JUnit的单元测试用例;深入掌握JUnit的核心类、JUnit生命周期。

课时安排8课时实验内容JUnit初步单元测试可以描述为“确保方法接收预期范围内的输入,并且对每个测试输入返回预期的结果。

”单元测试是独立的一个工作单元(一个工作单元是一项任务,它不依赖于其他任何任务的完成)。

在Java应用程序中,“独立的一个动作单元”常常指的是一个方法。

1.编写Calculator类及其手工测试类TestCalculatorManual图1:手工测试Calculator单元测试的一条准则是“若程序的某项功能没有经过测试,那么该功能基本等于不存在”。

这里的add方法是Calculator的核心功能之一,这里我们先手工编写测试类TestCalculatorManual。

2.TestCalculatorManual的设计优化也许你想为Calculator添加其他方法如subtract或multiply,就需要对TestCalculatorOne进行模块化的优化:图2:优化手工测试的测试脚本3.用JUnit进行单元测试(1)JUnit有很多功能可以简化测试用例的编写和运行,我们编写Test Case—TestCalculatorWithJUnit如下。

图3:使用JUnit设计测试脚本在Calculator类中添加subtract(), multiply(),divide()后,如何编写手工测试用例和基于JUnit 框架的测试用例应该如何编写?(2)使用默认的TestSuite, 显式调用Junit TestRunner图4:显式调用Junit TestRunner/** 调用由TestRunner自动创建的TestSuite对象* 默认的TestSuite对象将扫描测试类,找出所有以test开头的方法,* 为每一个testXXX方法都创建一个TestCase实例。

教你用IDEA配置JUnit并进行单元测试

教你用IDEA配置JUnit并进行单元测试

教你⽤IDEA配置JUnit并进⾏单元测试⽬录⼀、JUnit是什么?⼆、IDEA的JUnit配置三、⽣成JUnit4测试⽤例⼀、JUnit 是什么?JUnit 是⼀个 Java 语⾔的回归测试框架(regression testing framework),由 Kent Beck 和 Erich Gamma 建⽴。

Junit 测试也是程序员测试,即所谓的⽩盒测试,它需要程序员知道被测试的代码如何完成功能,以及完成什么样的功能。

⼆、IDEA 的 JUnit 配置(1)添加junit的依赖jar包 junit-4.12.jar、hamcrest-core-1.3.jarMaven项⽬pom配置:Maven项⽬pom配置:<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-core</artifactId><version>1.3</version></dependency>(2)安装junit4插件(3) 选择默认使⽤Junit4(4) 配置输出路径修改 Output Path 为:${SOURCEPATH}/../../test/java/${PACKAGE}/${FILENAME}(5)修改测试⽤例模板。

模板中⽣成的 package 的包名需去掉 test。

三、⽣成 JUnit4 测试⽤例⽅法⼀:在待编写测试的 java 类源码块上按快捷键 Alt + Insert。

IntelliJIDEA使用JUnit单元测试

IntelliJIDEA使用JUnit单元测试

IntelliJIDEA使⽤JUnit单元测试转载:前⾔单元测试的基本使⽤⼀、环境配置使⽤idea IDE 进⾏单元测试,⾸先需要安装JUnit 插件。

1.安装JUnit插件步骤File-->settings-->Plguins-->Browse repositories-->输⼊JUnit-->选择JUnit Generator V2.0安装。

2.使⽤JUnit插件在需要进⾏单元测试的类中,使⽤快捷键alt+insert,选择JUnit test,选择JUnit4。

⼆、单元测试代码Demo: @Testpublic void testAdd() {assertEquals(2, new UserDao().add(1, 1));}1>注意事项: 1、测试⽅法上⾯必须使⽤@Test注解进⾏修饰。

2、测试⽅法必须使⽤public void 进⾏修饰,不能带有任何参数。

3、新建⼀个源代码⽬录⽤来存放测试代码。

4、测试类的包应该与被测试类的包保持⼀致。

5、测试单元中的每⼀个⽅法必须独⽴测试,每个测试⽅法之间不能有依赖。

6、测试类使⽤Test做为类名的后缀(⾮必要)。

7、测试⽅法使⽤test作为⽅法名的前缀(⾮必要)。

2>错误解析: 1、Failure ⼀般是单元测试使⽤的断⾔⽅法判断失败引起,说明预期结果和程序运⾏结果不⼀致。

2、error 是有代码异常引起的,他产⽣于测试代码本⾝中的Bug。

3、测试⽤例是不是⽤来证明你是对的,⽽是⽤来证明你没有错。

3>测试流程:代码Demo: @BeforeClasspublic static void setUpBeforeClass() throws Exception {}@AfterClasspublic static void setUpAfterClass() throws Exception {}@Beforepublic void before() throws Exception {}@Afterpublic void after() throws Exception {} 1、@BeforeClass所修饰的⽅法在所有⽅法加载前执⾏,⽽且他是静态的在类加载后就会执⾏该⽅法, 在内存中只有⼀份实例,适合⽤来加载配置⽂件。

在Eclipse中使用JUnit4进行单元测试(初级篇)

在Eclipse中使用JUnit4进行单元测试(初级篇)

我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这一小部分功能是正确的。

但是,我们同时应该确保每一个函数都完全正确,因为如果我们今后如果对程序进行扩展,用到了某个函数的其他功能,而这个功能有bug的话,那绝对是一件非常郁闷的事情。

所以说,每编写完一个函数之后,都应该对这个函数的方方面面进行测试,这样的测试我们称之为单元测试。

传统的编程方式,进行单元测试是一件很麻烦的事情,你要重新写另外一个程序,在该程序中调用你需要测试的方法,并且仔细观察运行结果,看看是否有错。

正因为如此麻烦,所以程序员们编写单元测试的热情不是很高。

于是有一个牛人推出了单元测试包,大大简化了进行单元测试所要做的工作,这就是JUnit4。

本文简要介绍一下在Eclipse3.2中使用JUn it4进行单元测试的方法。

首先,我们来一个傻瓜式速成教程,不要问为什么,Follow Me ,先来体验一下单元测试的快感!首先新建一个项目叫JUnit_Test,我们编写一个Calculator类,这是一个能够简单实现加减乘除、平方、开方的计算器类,然后对这些功能进行单元测试。

这个类并不是很完美,我们故意保留了一些Bug 用于演示,这些Bug在注释中都有说明。

该类代码如下:public class Calculator {private static int result; //静态变量,用于存储运行结果public void add( int n) {result = result + n;public void substract( int n) { result = result - 1;//Bug:正确的应该是 result =result -npublic void multiply( int n) {//此方法尚未写好public void divide( int n) { result = result / n;public void square( int n) { result = n * n;public void squareRoot( int n) { for (; ;) ;//Bug : 死循环public void clear() { // 将结果清零public int getResult() { return result;第二步,将JUnit4单元测试包引入这个项目:在该项目上点右键, 点属性”如图:—卜艸result = 0;File Edit Scirce Reactor Maviqate Search Project Run Wfridcw, Help ■希書吐&〒 訂 &—JUnft:占 Formaklest''S 日JI 丁锻 2 GUITestlr _r I.'.I? ILaveRennennberWartls J T J*戸JUn#4 Testil> src卜 ft :P£ Sysl 卜» JUhit 吟'M/CbckLzr Servers s> 'U test|::严pr ivate stat lc Ca leu la. tor calculstt-or@Beicre13puti 1 ic void setUp () throwsExc&ptiDncalculator , clear ():国 Gaku^tWijsvaljO C^kul^rT^tlijoya 圖 NewCo Into—叮pen in Mew WindowOpen Type Hieurch^网void testAddU { Lculator . add.(2);二 <op/Ctrl+<sertEquals (5 f tor. getReaCop/ Quaff isd Nam&^7=. PasteCtrl+V乂 CeleteD&latevoid tescSut )stracE ()(B LI I L I Path► Lculator , ^dd.( 10):Source ^lt+Shift+-5Lculatcir.suijstraLct (2):Fefac^orAlt+ShiFt-hT卜 5er tEquals ( S f .tar ・ get-Res^Import...口 Expirt .. iP* Multiply () Wot 7&c imp 1 erne nrF呂_ RefreshClose PnojectClose Unrelated Projectsvoid teatMult ip 1y (){Run As Cetiuci As Erohle As Validate TgamCofnpare WithRestore From Lot ml Hestor^...PDE TQils」nv 日Persisten 匚亡Declaration 匚onsole在弹出的属性窗口中,首先在左边选择 “Java Build Path ”,然后到右上选择“Libraries标签,之后在最右边点击 “Add Library …按钮,如下图所示:然后在新弹出的对话框中选择JUnit4并点击确定,如上图所示,JUnit4软件包就被包含进我们这个项目了。

Junit单元测试-实验报告

Junit单元测试-实验报告

软件工程与计算Ⅰ实验报告实验名称: Junit单元测试实验分组号:实验人:陈燕珠班级: H13软件工程学号: _实验指导教师:陈国明实验场地:花都校区实验楼709实验时间: 2015、6、9成绩:实验四 Junit单元测试一、实验目的1.掌握白盒测试方法,并按单元测试的要求设计测试用例。

2.能熟练应用junit测试工具进行单元测试。

3.进行代码覆盖检查。

二、实验要求掌握系统测试的基本原理,按实验内容及步骤完成操作,完成实验报告,所有实验环节均由每位学生独立完成,严禁抄袭他人实验结果。

根据白盒法设计测试用例,并撰写单元测试计划书。

根据每个测试用例,编写基本Junit的单元测试脚本。

生成html格式的代码覆盖测试报告。

三、实验环境主流PC机一套,windows操作系统eclipse开发平台。

四、原理知识1.测试基本方法黑盒测试和白盒测试(1)黑盒测试(Black_Box testing)黑盒测试把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下、注重于测试软件的功能性要求,测试者在程序接口处进行测试,只检查程序功能是否按照规格说明书的规定正常使用,程序是否能接收输入数据而产生正确的输出信息,并且保持数据库和文件的完整性黑盒测试通常能发现以下几类错误:1、功能不对或遗漏2、界面错误3、数据结构或外部数据库访问错误4、性能错误5、初始化和终止错误采用黑盒技术设计测试用例的方法1、等价类划分2、边值分析法3、因果图4、猜错5、随机测试图1:白盒测试(2)白盒测试(White_Box testing)盒测试主要用于检查程序的内部结构、逻辑、循环和路径。

常用的白盒测试用例设计方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、符号测试法等。

其中最主要的方法就是逻辑覆盖法。

1、语句覆盖2、判定覆盖3、条件覆盖4、条件判定覆盖5、多条件覆盖图2:黑盒测试手工测试和自动化测试(1)手工测试手工测试有其不可替代的地方,因为人具有很强的判断能力,而工具没有,所以手工测试的不可替代性体现在以下几个方面:①测试用例的设计:测试人员的经验和对错误的判断能力是工具不可替代的;②界面和用户体验测试:人类的审美观和心理体验是工具不可模拟的;③正确性的检查:人们对是非的判断、逻辑推理能力是工具不具备的。

SpringMVC框架整合Junit进行单元测试(案例详解)

SpringMVC框架整合Junit进行单元测试(案例详解)

SpringMVC框架整合Junit进⾏单元测试(案例详解)本⽂主要介绍在SpringMVC框架整合Junit框架进⾏单元测试。

闲话少述,让我们直⼊主题。

系统环境软件版本spring-webmvc4.3.6.RELEASEspring-test 4.3.6.RELEASEjunit 4.12引⼊依赖<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version><scope>test</scope></dependency>如上,引⼊了4个依赖,其中:1. junit 是Junit单元测试的基础依赖,它提供了@RunWith和@Test等单元测试必备的注解。

<scope>test</scope>则指明了该依赖的作⽤范围是test阶段。

2. spring-test依赖可以理解成是spring框架与junit框架的桥梁。

提供了@WebAppConfiguration等注解。

编写单元测试基类@RunWith(SpringJUnit4ClassRunner.class)@WebAppConfiguration@ContextConfiguration("file:src/test/java/spring-config.xml")@ActiveProfiles("dev")@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)public abstract class BaseControllerTest {protected MockMvc mvc;@Autowiredprivate WebApplicationContext context;//获取系统上下⽂protected WebApplicationContext getCtx() {return this.context;}//初始化⽅法@Beforepublic void setup() throws SQLException {this.mvc = MockMvcBuilders.webAppContextSetup(this.context).build();}//封装返回结果protected String getMockResultStr(MockHttpServletRequestBuilder requestBuilder) {try {MvcResult mvcResult = this.mockMvc.perform(requestBuilder).andExpect(status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();MockHttpServletResponse response = mvcResult.getResponse();response.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE);return response.getContentAsString();} catch (Exception e) {e.printStackTrace();return null;}}}代码说明1. @RunWith(SpringJUnit4ClassRunner.class)注解表明使⽤SpringJUnit4ClassRunner来运⾏测试⽤例。

从JUnit到NUnit——NUnit单元测试快速入门

从JUnit到NUnit——NUnit单元测试快速入门

从JUnit到NUnit ——NUnit单元测试快速入门
近期做一个简单的C#项目,于是下载了SharpDevelop 2.x作为开发环境,也下载了NUnit 做单元测试只用。

由于之前做Java开发用习惯了Eclipse集成环境,误以为C#中单元测试也有如下特性:
·项目中的任意Class只要符合JUnit测试单元的要求,都可以做单元测试
·在集成环境中可以直接启动单元测试
后来发现这些想法完全不适用C#开发,经过了一段时间的摸索,终于顺利享受NUnit单元测试带来的畅快,简单记录一下:
1. 创建Class Library类型的项目,将需要单元测试的类放进去
2. 新建单元测试
3. 构建项目,生成.dll文件
4. 使用NUnit/bin目录下的NUnit.exe打开上一步生成的.dll文件
5. 选择需要测试的单元或者方法。

java单元测试JUnit框架原理与用法实例教程

java单元测试JUnit框架原理与用法实例教程

java单元测试JUnit框架原理与⽤法实例教程本⽂实例讲述了java单元测试JUnit框架原理与⽤法。

分享给⼤家供⼤家参考,具体如下:1 简介JUnit是⼀个Java语⾔的单元测试框架,它由 Kent Beck 和 Erich Gamma 建⽴,逐渐成为 xUnit 家族中最为成功的⼀个。

JUnit有它⾃⼰的JUnit扩展⽣态圈,多数Java的开发环境都已经集成了JUnit作为单元测试的⼯具。

在这⾥,⼀个单元可以是⼀个⽅法、类、包或者⼦系统。

因此,单元测试是指对代码中的最⼩可测试单元进⾏检查和验证,以便确保它们正常⼯作。

例如,我们可以给予⼀定的输⼊测试输出是否是所希望得到的结果。

在本篇博客中,作者将着重介绍 JUnit 4.X 版本的特性,这也是我们在⽇常开发中使⽤最多的版本。

2 特点JUnit提供了注释以及确定的测试⽅法;JUnit提供了断⾔⽤于测试预期的结果;JUnit测试优雅简洁不需要花费太多的时间;JUnit测试让⼤家可以更快地编写代码并且提⾼质量;JUnit测试可以组织成测试套件包含测试案例,甚⾄其他测试套件;Junit显⽰测试进度,如果测试是没有问题条形是绿⾊的,测试失败则会变成红⾊;JUnit测试可以⾃动运⾏,检查⾃⼰的结果,并提供即时反馈,没有必要通过测试结果报告来⼿动梳理。

3 内容3.1 注解@Test :该注释表⽰,⽤其附着的公共⽆效⽅法(即⽤public修饰的void类型的⽅法)可以作为⼀个测试⽤例;@Before :该注释表⽰,⽤其附着的⽅法必须在类中的每个测试之前执⾏,以便执⾏测试某些必要的先决条件;@BeforeClass :该注释表⽰,⽤其附着的静态⽅法必须执⾏⼀次并在类的所有测试之前,发⽣这种情况时⼀般是测试计算共享配置⽅法,如连接到数据库;@After :该注释表⽰,⽤其附着的⽅法在执⾏每项测试后执⾏,如执⾏每⼀个测试后重置某些变量,删除临时变量等;@AfterClass :该注释表⽰,当需要执⾏所有的测试在JUnit测试⽤例类后执⾏,AfterClass注解可以使⽤以清理建⽴⽅法,如断开数据库连接,注意:附有此批注(类似于BeforeClass)的⽅法必须定义为静态;@Ignore :该注释表⽰,当想暂时禁⽤特定的测试执⾏可以使⽤忽略注释,每个被注解为@Ignore的⽅法将不被执⾏。

JUnit之TestCase和TestSuite详解

JUnit之TestCase和TestSuite详解
(图2)
TestCase:
在进行单元测试的时候,在JUNIT4之前,我们需要测试的代码所在的类一般都需要直接或者间接继承自TestCase,对于我们创建的 这个TestCase的子类,我们需要注意在我们这个类的测试流程,假设我们创建的TestCase子类中有两个测试用例testMethod1和 testMethod2,则执行顺序可以蚕食图3所示:
public static Test testFromSuiteMethod(Class<?> klass) throws Throwable { Method suiteMethod= null; Test suite= null; try { suiteMethod= klass.getMethod("suite"); if (! Modifier.isStatic(suiteMethod.getModifiers())) { throw new Exception(klass.getName() + ".suite() must be static"); } suite= (Test) suiteMethod.invoke(null); // static method } catch (InvocationTargetException e) { throw e.getCause(); } return suite; } 所以suite方法命名规则如下: 1).必须以“suite”方法命名; 2).suite方法的访问修饰权限必须为static; 3).suite方法必须为静态方法; 4).suite方法必须没有参数。
总结:
TestCase和TestSuite类是JUNIT中比较重要的两个类,TestCase和TestSuite可以认为是JAVA的合成设计模式在单元测试中的应用, 其实即便我们没有自己声明和创建TestSuite的子类,而且运行的TestCase子类的过程中也会创建TestSuite类,并将要执行的TestCase子 类的实例对象添加到TestSuite中去执行,其执行过程可以如图7所示:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JUnit入门简介+实例
1、几个相关的概念 白盒测试——把测试对象看作一个打开的盒子,程序内部的逻辑结
构和其他信息对测试人员是公开的。 回归测试——软件或环境的修复或更正后的“再测试”,自动测试
工具对这类测试尤其有用。 单元测试——是最小粒度的测试,以测试某个功能或代码块。一般
由程序员来做,因为它需要知道内部程序设计和编码的细节。 JUnit ——是一个开发源代码的Java测试框架,用于编写和运行可
何派生自Test的对象;当调用TestSuite对象的run()方法是,会遍历自 己容纳的对象,逐个调用它们的run()方法。(可参考《程序员》20036期)。 3.4、JUnit的安装和配置
JUnit安装步骤分解:
1. 在/junit/中下载JUnit包并将Junit压缩包解压到一个物 理目录中(例如C:\Junit3.8.1)。
1. 不要用TestCase的构造函数初始化,而要用setUp()和tearDown()方法。 2. 不要依赖或假定测试运行的顺序,因为JUnit利用Vector保存测试方法。所以不同
重复的测试。他是用于单元测试框架体系xUnit的一个实例(用于java 语言)。主要用于白盒测试,回归测试。
2、单元测试概述 2.1、单元测试的好处
A、提高开发速度——测试是以自动化方式执行的,提升了测试代 码的执行效率。
B、提高软件代码质量——它使用小版本发布至集成,便于实现人 员除错。同时引入重构概念,让代码更干净和富有弹性。
2. 记录Junit.jar文件所在目录名(例如C:\Junit3.8.1\Junit.jar)。 3. 进入操作系统(以Windows2000操作系统为准),按照次序点击“开始 设置 控
制面板”。 4. 在控制面板选项中选择“系统”,点击“环境变量”,在“系统变量”的“变量”列表框中
选择“CLASS-PATH”关键字(不区分大小写),如果该关键字不存在则添加。 5. 双击“CLASS-PATH”关键字添加字符串“C:\Junit3.8.1\Junti.jar”(注意,如果已有别
的字符串请在该字符串的字符结尾加上分号“;”),这样确定修改后Junit就可以在 集成环境中应用了。 6. 对于IDE环境,对于需要用到的JUnit的项目增加到lib中,其设置不同的IDE有不同 的设置 。
3.5、JUnit中常用的接口和类 Test接口——运行测试和收集测试结果
1. Test接口使用了Composite设计模式,是单独测试用例 (TestCase),聚合测试模 式(TestSuite)及测试扩展(TestDecorator)的共同接口。
A、可以使测试代码与产品代码分开。 B、针对某一个类的测试代码通过较少的改动便可以应用于另一个
类的测试。 C、易于集成到测试人员的构建过程中,JUnit和Ant的结合可以实
施增量开发。 D、JUnit是公开源代码的,可以进行二次开发。 C、可以方便地对JUnit进行扩展。
编写原则: A、是简化测试的编写,这种简化包括测试框架的学习和实际测试
3.7、Eclipse中JUnit的使用 Eclipse自带了一个JUnit的插件,不用安装就可以在你的项目中开
始测试相关的类,并且可以调试你的测试用例和被测试类。 使用步骤如下: 1、新建一个测试用例,点击“File->New->Other…菜单项,在弹
出的“New”对话框中选择”Java->JUnit”,下的TestCase 或 TestSuite,就进入“New JUnit TestCase”对话框
2. JUnit 提供了6大类31组断言方法,包括基础断言、数字断言、字符断言、布尔断 言、对象断言。
3. 其中assertEquals(Object expcted,Object actual)内部逻辑判断使用equals()方法,这 表明断言两个实例的内部哈希值是否相等时,最好使用该方法对相应类实例的值 进行比较。而assertSame(Object expected,Object actual)内部逻辑判断使用了Java 运算符“==”,这表明该断言判断两个实例是否来自于同一个引用(Reference), 最好使用该方法对不同类的实例的值进行比对。asserEquals(String message,String expected,String actual)该方法对两个字符串进行逻辑比对,如果不匹配则显示着两 个字符串有差异的地方。ComparisonFailure类提供两个字符串的比对,不匹配则给 出详细的差异字符。
C、提升系统的可信赖度——它是回归测试的一种。支持修复或更 正后的“再测试”,可确保代码的正确性。 2.2、单元测试的针对对象
A、面向过程的软件开发针对过程。 B、面向对象的软件开发针对对象。 C、可以做类测试,功能测试,接口测试(最常用于测试类中的方 法)。 2.3、单元测试工具和框架 目前的最流行的单元测试工具是xUnit系列框架,常用的根据语言不 同分为JUnit(java),CppUnit(C++),DUnit (Delphi ),
2、在“New JUnit TestCase”对话框填写相应的栏目,主要有 Name(测试用例名),SuperClass(测试的超类一般是默认的 junit.framework.TestCase),Class Under Test(被测试的类), Source Folder(测试用例保存的目录),Package(测试用例包名), 及是否自动生成main,setUp,tearDown方法。
3. TestFailure失败类是个“失败”状况的收集类,解释每次测试执行过程中出现的异常 情况。其toString()方法返回“失败”状况的简要描述
3.6、JUnit一个实例 在控制台中简单的范例如下: 1、写个待测试的Triangle类,创建一个TestCase的子类 ExampleTest: 2、 ExampleTest中写一个或多个测试方法,断言期望的结果(注意: 以test作为待测试的方法的开头,这样这些方法可以被自动找到并被 测试) 3、 ExampleTest中写一个suite()方法,它会使用反射动态的创建一 个包含所有的testXxxx方法的测试套件: 4、 ExampleTest可以写setUp()、tearDown()方法,以便于在测试时 初始化或销毁测试所需的所有变量和实例。(不是必须的) 5、写一个main()方法以文本运行器或其它GUI的方式方便的运行测试 6、编译ExampleTest,执行类与接口
1. TestResult结果类集合了任意测试累加结果,通过TestResult实例传递个每个测试的 Run()方法。TestResult在执行TestCase是如果失败会异常抛出
2. TestListener接口是个事件监听规约,可供TestRunner类使用。它通知listener的对象 相关事件,方法包括测试开始startTest(Test test),测试结束endTest(Test test),错 误,增加异常addError(Test test,Throwable t)和增加失败addFailure(Test test,AssertionFailedError t)
Assert静态类——一系列断言方法的集合
1. Assert包含了一组静态的测试方法,用于期望值和实际值比对是否正确,即测试失 败,Assert类就会抛出一个AssertionFailedError异常,JUnit测试框架将这种错误归 入Failes并加以记录,同时标志为未通过测试。如果该类方法中指定一个String类 型的传参则该参数将被做为AssertionFailedError异常的标识信息,告诉测试人员改 异常的详细信息。
3. TestSuite处理测试用例有6个规约(否则会被拒绝执行测试)
A 测试用例必须是公有类(Public)
B 测试用例必须继承与TestCase类
C 测试用例的测试方法必须是公有的( Public )
D 测试用例的测试方法必须被声明为Void
E 测试用例中测试方法的前置名词必须是test
F 测试用例中测试方法误任何传递参数
(TestCase)。 B、测试用例的集合,可容纳多个测试用例(TestCase),将其称作
测试包(TestSuite)。 C、测试结果的描述与记录。(TestResult) 。 D、测试过程中的事件监听者(TestListener)。 E、每一个测试方法所发生的与预期不一致状况的描述,称其测试
失败元素(TestFailure) F、JUnit Framework中的出错异常(AssertionFailedError)。 JUnit框架是一个典型的Composite模式:TestSuite可以容纳任
1. TestCase是Test接口的抽象实现,(不能被实例化,只能被继承)其构造函数
TestCase(string name)根据输入的测试名称name创建一个测试实例。由于每一个 TestCase在创建时都要有一个名称,若某测试失败了,便可识别出是哪个测试失 败。 2. TestCase类中包含的setUp()、tearDown()方法。setUp()方法集中初始化测试所需的 所有变量和实例,并且在依次调用测试类中的每个测试方法之前再次执行setUp() 方法。tearDown()方法则是在每个测试方法之后,释放测试程序方法中引用的变量 和实例。 3. 开发人员编写测试用例时,只需继承TestCase,来完成run方法即可,然后JUnit获 得测试用例,执行它的run方法,把测试结果记录在TestResult之中。
NUnit(.net),PhpUnit(Php )等等。该测试框架的第一个和最杰出 的应用就是由Erich Gamma (《设计模式》的作者)和Kent Beck(XP(Extreme Programming)的创始人 )提供的开放源代码的 JUnit。
3.Junit入门简介 3.1、JUnit的好处和JUnit单元测试编写原则 好处:
相关文档
最新文档