Spring(3)—— Junit框架单元测试
Junit主要用于单元测试,即白盒测试。它是一个开源的由JAVA开发的一个用于测试的框架。
Junit的几个基本概念:TestCase,TestSuite,TestFixtrue
TestCase:代表一个测试用例,每一个TestCase实例都对应一个测试,这个测试通过这个TestCase实例的名字标志,以便在测试结果中指明哪个测试出了问题。TestCase继承自Assert,因此可以实现各种断言。
TestSuite:代表需要测试的一组测试用例,也是测试用例的集合。
TestFixtrue:代表一个测试环境,用于租户一组测试用例,这组测试用例需要共同的测试运行环境。
现在世面上有很多的测试工具,比如说NUNIT,PHPUNIT等。但是在JAVA的世界里面JUnit是最适合我们的单元测试工具。
A:可以使测试代码与产品代码分开
B:针对某一个类的测试代码通过较少的改动便可以应用于另一个类的测试
C:易于集成到测试人员的构建过程中,JUnit和Ant的结合可以实施增量开发
D:JUnit是公开源代码的,可以进行二次开发
E:可以方便地对JUnit进行扩展
编写原则:
A: 是简化测试的编写,这种简化包括测试框架的学习和实际测试单元的编写
B: 是使测试单元保持持久性
C: 是可以利用既有的测试来编写相关的测试
例证:
第一步:拷贝jar包
junit-3.8.2.jar(4.x主要增加注解应用)
第二步:编写业务类
public class User{
private String username;
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username = username;
}
//添加方法
public String logion()throws Exception{
if("admin".equal(username)){
return "success"
}else{
return "error"
}
}
}
第三步:定义测试类
测试类最好单独建立项目,或者单独定义文件夹储存,需要继承junit.framework.TestCase
第四步:增加测试方法
测试方法必须是public,不应该有返回值,方法名必须以test开头,无参数测试方法是有执行先后顺序,按照方法的定义先后顺序。多个测试方法对同一个业务方法进行测试,一般每个逻辑分支机构都有测试到。
public class TestUserextends TestCase{
publicvoid testUser_Success() throws Exception{
//准备数据
Useraction = new User();
action.setUsername("admin");
//调用被测试方法
Stringresult = action.login();
//判断测试是否通过
assertEquals("success",result);
}
}
运行程序,如果测试成功会出现如下图所示的结果
如果运行失败,有方法没有通过测试,那么就会显示出在哪个方法出错了。上图中绿色的条会变成红色的。
第五步:测试类的生命周期方法
//用来进行初始化操作
@Override
protectedvoid setUp() throws Exception {
System.out.println("setUp...");
} //用来做销毁操作
@Override
protectedvoid tearDown() throws Exception {
System.out.println("tearDown...");
}
setUp方法会在每个测试方法前执行一次。tearDown方法会在每个测试方法后执行一次。
Spring(3)—— Junit框架单元测试的更多相关文章
- 使用Spring配合Junit进行单元测试的总结
最近公司的项目和自己的项目中都用到了spring集成junit进行单元测试,总结一下几种基本的用法: 1.直接对spring中注入的bean进行测试(以DAO为例): 在测试类上添加@RunWith注 ...
- Spring整合JUnit框架进行单元测试代码使用详解
一.Spring提供的JUnit框架扩展: 1. AbstractSpringContextTests:spring中使用spring上下文测试的Junit扩展类,我们一般不会使用这个类来进行单元 ...
- Spring整合Junit框架进行单元测试Demo
一.开发环境 eclipse版本:4.6.1 maven版本:3.3.3 junit版本:4.12 spring版本:4.1.5.RELEASE JDK版本:1.8.0_111 二.项目结构 图 三. ...
- Spring整合Junit框架
一.开发环境 eclipse版本:4.6.1 maven版本:3.3.3 junit版本:4.12 spring版本:4.1.5.RELEASE JDK版本:1.8.0_111 二.项目结构 图 三. ...
- spring集成Junit做单元测试及常见异常解决办法
spring-test依赖包 <!--Spring-test --> <!-- https://mvnrepository.com/artifact/org.springframew ...
- Spring boot Junit Test单元测试
Spring boot 1.40 JUnit 4 需要依赖包 spring-boot-starter-test.spring-test 建立class,加上如下注解,即可进行单元测试,别的帖子里说要加 ...
- [转][Java]使用Spring配合Junit进行单元测试的总结
http://www.51testing.com/html/14/n-1408814.html 1.直接对spring中注入的bean进行测试(以DAO为例): 在测试类上添加@RunWith注解指定 ...
- Spring整合Junit进行单元测试
I. 加入依赖包 Spring Test (如spring-test-2.5.4.jar) JUnit 4 Spring 其他相关包 II.新建Junit Test Case III.读取配置文件 @ ...
- Spring集成JUnit单元测试框架
一.JUnit介绍 JUnit是Java中最有名的单元测试框架,用于编写和运行可重复的测试,多数Java的开发环境都已经集成了JUnit作为单元测试的工具.好的单元测试能极大的提高开发效率和代码质量. ...
随机推荐
- uva oj 567 - Risk(Floyd算法)
/* 一张有20个顶点的图上. 依次输入每个点与哪些点直接相连. 并且多次询问两点间,最短需要经过几条路才能从一点到达另一点. bfs 水过 */ #include<iostream> # ...
- sqlserver -- 学习笔记(八)体验charindex、stuff 和 for xml path在实际问题中的应用及几个问题的探讨
写在前面 之前做了个微信端顾客扫码评价员工的功能,除了打分数,还可以打标签. 需要统计分数和统计各个员工每种标签被点击的次数. 后来加了个要求,需要查看客户对某个员工一次服务所打出的标签组合. 在不 ...
- Dijkstra算法(二)之 C++详解
本章是迪杰斯特拉算法的C++实现. 目录 1. 迪杰斯特拉算法介绍 2. 迪杰斯特拉算法图解 3. 迪杰斯特拉算法的代码说明 4. 迪杰斯特拉算法的源码 转载请注明出处:http://www.cnbl ...
- Spring MVC 学习总结(五)——校验与文件上传
Spring MVC不仅是在架构上改变了项目,使代码变得可复用.可维护与可扩展,其实在功能上也加强了不少. 验证与文件上传是许多项目中不可缺少的一部分.在项目中验证非常重要,首先是安全性考虑,如防止注 ...
- C#中使用Oracle存储过程返回结果集
问题: 在MSSQLServer中定义的存储过程可以直接返回一个数据集,如: create procedure sp_getAllEmployees as SELECT * FROM [NORTHWN ...
- 精致3D图片切换效果,最适合企业产品展示
这是一个精致的立体图片切换效果,特别适合企业产品展示,可立即用于实际项目中.支持导航和自动播放功能, 基于 CSS3 实现,推荐使用最新的 Chrome,Firefox 和 Safari 浏览器浏览效 ...
- mysql插入日期 vs oracle插入日期
今天做oracle日期插入的时候突然开始疑惑日期是如何插入的. 用框架久了,反而不自己做简单的工作了.比如插入. 通常,新建一个表对象,然后绑定数据,前端form提交,后端getModel后直接mod ...
- iOS宏定义的使用与规范
宏定义在很多方面都会使用,例如定义高度.判断iOS系统.工具类,还有诸如文件路径.服务端api接口文档.为了对宏能够快速定位和了解其功能,我们最好在定义的时候将其放入特定的头文件中 定义尺寸类的宏 D ...
- ADO.NET封装的SqlHelper
参照别人的方法,顺便再次复习下ADO.NET的相关知识.为自己的类库做准备. namespace Common.SqlHelper { /// <summary> /// ADO.NET- ...
- JavaScript中的parseInt的进制问题
昨天帮原来同学写个js,碰见个问题,parseInt('08')的结果竟然是0后来突然想过来,是八进制的原因parseInt 方法 返回由字符串转换得到的整数.parseInt(numString, ...