java 单元测试用例_Java单元测试和JUnit

**********************单元测试和JUnit********************************

为什么要使用单元测试

1.底层代码没问题,上一层才不会出现问题.. 就像盖楼一样

2.提高士气,明确知道我的东西是没问题的, 保证你不被开

3.加大测试的力度可以降低后期维护的成本

一.什么是JUnit

JUnit是一个单元测试框架,另一个叫做TestNG

框架: 一组类(普通类、抽象类、接口)的集合,别人帮你写好了,你直接拿来用就可以了,

提供一系列功能... 提供了测试相关的功能

半成品: 一半已经完成了、一半没有完成

类似于填空题、选择题

使用框架的好处: 限制了程序员的随意发挥,提高了程序的可读性和可维护性,便于团队的开发

JUnit已经逐渐成为xUnit家族中最为成功的一个.

xUnit中还有: cppUnit、pythonUnit、xUnit.net

二.why 为什么用JUnit

使用main方法测试好不好??

不好.缺点如下

1.多个测试用例类无法同时测,每测一个业务逻辑类 都用单独去执行它的测试用例,比较麻烦

2.使用main方法测试需要人为的观察 测试结果 比如看到30 就是正确 比较麻烦

使用了jUnit以后 只需要看bar就可以了 绿条 表示测试通过 红条 表示测试失败

三.how 如何使用jUnit

去官网下载 http://junit.org/

最新版本jUnit5 ,我们使用的是稳定版本 jUnit-4.10

下载下来以后是一个zip包,解压缩 使用里面的 junit-4.10.jar 文件即可

1. 导jar包

把junit-4.10.jar 导到 myeclipse中的 build-path中

工程右键-build path -configure build path--libraies--add external jar

选中d:\ jUnit-4.10.jar 即可

jar包; 实质就是压缩包, zip、rar、jar

什么是build-path?build-path的作用?

build- path 构建路径

build-path相当于以前所学的class-path的概念,build-path是myeclipse自己

的一套classpath.

程序员知道jar包在d:\盘 ,但是myeclipse不知道,如何让myeclipse找到jar包

把jar添加到build-path中就可以了,myeclipse就能找到jar包了

如果程序员没有使用任何IDE编程, 例如使用editplus 这样想使用jar包需要把

jar包的路径添加到classpath中即可

Classpath: 运行的类去哪找 是去Classpath找,编译的时候 当前类 依赖的类(TestCase) 去哪找 也是去Classpath下找

如果没有把 jUnit-4.10.jar加到 classpath是找不到这个类的...

2. 进行测试

(1) 业务逻辑类 Calculator

(2) 编写测试用例类

TestXXX

TestCalculator

*************************************使用jUnit如何编写测试用例类*******************************

1. jUnit3

演示代码:

package com.chapter17;

import junit.framework.TestCase;

//测试用例类

//jUnit3的测试用例类

public class TestCalculator extends TestCase {

// 测试方法的命名规范

// public void textXXX 没有任何的参数

public void testAdd() {

Calculator cal = new Calculator();

int sum = cal.add(10, 20);

//使用断言来代替 System.out.println

//断言: 就是判断的意思

assertEquals("亲,失败了",30,sum);

}

}

如何运行:

展开Outline概要视图 在你想要运行的测试方法上面 右键 run as -junit test

2. jUnit4

测试用例类不需要继承任何类,直接在测试方法上面加一个@Test注解就可以了

演示代码:

import org.junit.Test;

import static org.junit.Assert.*;

//jUnit4的测试用例类

public class TestCalculator4 {

@Test

public void testAdd(){

Calculator cal = new Calculator();

int sum = cal.add(10, 20);

assertEquals("亲,失败了",30,sum);

}

}

**********************************测试结果分析****************************************

1. 测试通过 Pass

期望值和实际值相等,表示测试通过...绿条

一组测试用例

输入参数1 输入参数2 期望值 实际值

1020 30 30

2. 测试失败 Failure

期望值和实际值不等,红条

3. 测试错误 Error

测试代码本身出现问题... 需要先把测试代码的错误修正以后 再从新进行测试

*************************************测试常用的方法*******************************

jUnit3

setUp(): 在每个测试方法执行前执行,一般用来放建立资源的代码(例如连接数据库、建立socket连接等)

tearDown(): 在每个测试方法执行后执行,一般用来放释放资源的代码(例如关闭数据库、关闭socket连接等)

jUnit4

Unit4支持多种注解来简化测试类的编写

**测试期望出现一个异常

@Test(expected=ArithmeticException.class)

public void testDivide(){

Calculator cal = new Calculator();

int result = cal.divide(10, 2);

}

**测试效率

新建一个业务逻辑类

public class FileCopy {

public void copy(){

for(int i=1;i<=1000;i++){

System.out.println(i);

}

}

}

测试用例类

public class TestFileCopy {

@Test(timeout=50)

public void testCopy(){

FileCopy fc = new FileCopy();

fc.copy();

}

}

*************************************测试套件*******************************

如果想执行多个测试用类,之前需要在每个测试用例类 上面 单击右键 一个一个执行,比较麻烦.

有没有一种方式可以让多个测试用例类 同时执行?

有的.可以把多个测试用例类加入到测试套件中,只需要执行该测试套件即可..执行了这个测试套件,相当于

把该测试套件中所有的测试用例类都挨个执行了

*************************************参数化测试*******************************

让多组测试用例的数据同时执行

演示代码参见教案

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416414.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5专题总结-数据结构

专题5-数据结构 2017-07-13 C Primer P329好好研读&#xff0c;stack,queue,priority_queue都是顺序容器适配器adaptor。&#xff08;接受一种已有的容器类型&#xff0c;使其行为看起来像另一种事物一样&#xff09; 适配器的底层容器&#xff08;array和forward_list都不行&a…

mysql8.0创建属性_MySQL8.0新特性——资源管理

MySQL8.0——资源管理&#xff1a;参考官方文档&#xff1a;https://dev.mysql.com/doc/refman/8.0/en/resource-groups.htmlMySQL支持资源组的创建和管理&#xff0c;并允许将服务器内运行的线程分配给特定组&#xff0c;以便线程根据组可用的资源执行。组属性可以控制其资源&…

Ribbon自带负载均衡策略比较

Ribbon自带负载均衡策略比较 策略名策略声明策略描述实现说明BestAvailableRulepublic class BestAvailableRule extends ClientConfigEnabledRoundRobinRule选择一个最小的并发请求的server逐个考察Server&#xff0c;如果Server被tripped了&#xff0c;则忽略&#xff0c;在选…

java byte数组转int数组_Java任意长度byte数组转换为int数组的方法

前言嗯。最近工程上遇到一个byte数组转换为int的问题&#xff0c;解决过程中遇到了几个坑&#xff0c;经过各种查资料终于还是解决了。撒花。Java的位运算以及byte数组与其他类型数据的转换比c/c感觉麻烦一些。这里简单说明一下byte数组和int的转换吧。总所周知&#xff0c;int…

newcondition java_Java并发Condition接口

全屏java.util.concurrent.locks.Condition接口提供一个线程挂起执行的能力&#xff0c;直到给定的条件为真。 Condition对象必须绑定到Lock&#xff0c;并使用newCondition()方法获取对象。Condition类的方法以下是Condition类中可用的重要方法的列表。序号方法名称描述1publi…

前端学习(2486):$emit

1、父组件可以使用 props 把数据传给子组件。 2、子组件可以使用 $emit 触发父组件的自定义事件。 vm.$emit( event, arg ) //触发当前实例上的事件 vm.$on( event, fn );//监听event事件后运行 fn&#xff1b; 例如&#xff1a;子组件&#xff1a; <template><di…

葡萄城报表介绍:B/S 报表软件

葡萄城报表介绍&#xff1a;B/S 报表软件 B/S 报表软件定义 B/S&#xff08;Browser/Server&#xff0c;浏览器/服务器模式&#xff09;也称 B/S 结构&#xff0c;是 WEB 兴起后的一种网络结构模式。B/S 模式是由最开始的 C/S&#xff08;Client/Server&#xff0c;客户机/服务…

java接口与集合_【总结】Java常用集合接口与集合类

目录常见集合接口概述CollectionMapCollection接口Map接口补充内容常见集合接口概述Java中包含许多集合接口。其中比较常见的主要是Collection接口和Map接口&#xff1a;1.1 Collection由单元素组成的集合。其比较常见的直接子接口是List、Set和Queue接口。表1.1 Collection接口…

Hexo自定义页面的方法

原文转自&#xff1a;http://refined-x.com/2017/07/10/Hexo%E8%87%AA%E5%AE%9A%E4%B9%89%E9%A1%B5%E9%9D%A2%E7%9A%84%E6%96%B9%E6%B3%95/ Hexo是静态页博客生成利器&#xff0c;同很多博主一样&#xff0c;前端路上原创技术博客也是使用Hexo生成并托管在Github Page上的&…

java 图形绘制_Java Graphics 图形绘制

Graphics类提供基本绘图方法&#xff0c;Graphics类提供基本的几何图形绘制方法&#xff0c;主要有&#xff1a;画线段、画矩形、画圆、画带颜色的图形、画椭圆、画圆弧、画多边形、画字符串等。画线段drawLinepublic abstract void drawLine(int x1,int y1,int x2,int y2)在此…

woodcut

http://www.lintcode.com/en/problem/wood-cut/# 二分答案&#xff0c;贪心验证&#xff0c;具有单调性 class Solution { public:/***param L: Given n pieces of wood with length L[i]*param k: An integer*return: The maximum length of the small pieces.*/int woodCut(v…

java web应用程序_如何构建Java Web 应用程序 - Spring Boot?

Spring Framework 是可以帮助 Java 开发人员创建企业级应用程序的开源解决方案。构建在该平台基础之上的较热门项目之一是 Spring Boot&#xff0c;它提供一种简化的方法来创建独立的 Java 应用程序。本教程将逐步讲解如何创建示例 Spring Boot 入门 Web 应用&#xff0c;并将其…

工作59:常见报错

常见报错解决 1. 页面显示没有数据 页面显示没有数据的时候&#xff08;三级联动&#xff09;&#xff0c;注意去mounted里面看一下&#xff0c;获取数据的方法如getAddress()&#xff1b;有没有执行&#xff0c;是否将数据渲染到了页面&#xff1b; 2.404 状态码 第一次&a…

Python基础【day02】:元组和购物车练习的知识点

一、元组 元组其实跟列表差不多&#xff0c;也是存一组数&#xff0c;只不是它一旦创建&#xff0c;便不能再修改&#xff0c;所以又叫只读列表 用途&#xff1a;一般情况下用于自己写的程序能存下数据&#xff0c;但是又希望这些数据不会被改变&#xff0c;比如&#xff1a;数…