一、软件测试

软件开发:

项目调研--需求分析--软件设计--程序编码--软件测试--运行维护

软件测试:利用测试工具按照测试方案和流程对产品进行功能和性能测试,使用人工或者自动手段来运行或测试某个系统的过程。目的在于检验是否满足规定的需求,确认预期结果与实际结果之间的差别。

墨盒测试-白盒测试-回归测试-单元测试

二、JUnit-单元测试工具

三、测试Junit测试类

创建被测试类

package com.pb.junit;
/**
*1.创建被测试类
*2.Junit 3.0或者4.0 这里有3.0
*3.创建测试类
*简单实现加,减,乖,除的计算器
*/
public class Calculator { //运算结果
private static int result; //加法
public void add(int n){
result+=n;
}
//减法
public void minus(int n){
result-=n;
}
//乖法
public void mult(int n){
//result*=n;
}
//除法
public void div(int n){
if(n==0){
System.out.println("除数不能为0!");
}else{
result/=n;
}
}
//开方 :死循环
public void sqr(){
for(;;){ }
} //平方
public void square(int n){
result=n*n; }
//清零运算结果
public void clear(){
result=0;
} public int getResult() {
return result;
}
public void setResult(int result) {
Calculator.result = result;
} }

使用JUnit3测试

package com.pb.junit;

import junit.framework.Assert;
import junit.framework.TestCase; public class CalculatorTest extends TestCase {
//创建测试类对象
Calculator calculator=new Calculator();
//测试启动前运行的方法
protected void setUp() throws Exception {
super.setUp();
calculator.clear();
System.out.println("测试前");
}
//测试结束后运行的方法
protected void tearDown() throws Exception {
super.tearDown();
System.out.println("测试后");
}
//JUnit3中测试方法必须以test开头
public void testAdd() {
calculator.add(2);
calculator.add(3); //2+3结果为5 int result=calculator.getResult();
Assert.assertEquals(5, result);
} public void testMinus() {
calculator.minus(1);
calculator.minus(5);//期望结果为-6
int result=calculator.getResult();
Assert.assertEquals(-6, result);
} public void testMult() {
calculator.mult(3);
calculator.mult(4);
int result=calculator.getResult();
Assert.assertEquals(12, result);
} public void testDiv() {
calculator.div(8);
calculator.div(0);
int result=calculator.getResult();
Assert.assertEquals(4 ,result);
} }

使用JUnit4

package com.pb.junit;

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test; public class CalculatorTest {
Calculator calculator=new Calculator(); @BeforeClass
public static void setUpBeforeClass() throws Exception {
System.out.println("============所有测试之前执行一次");
} @AfterClass
public static void tearDownAfterClass() throws Exception {
System.out.println("所有测试之后执行一次==========");
} @Before
public void setUp() throws Exception {
System.out.println("==========每个测试之前执行一次");
calculator.clear();
} @After
public void tearDown() throws Exception {
System.out.println("每个测试之后执行一次=============");
}
//@Test 是必须的,测试方法可以不用以test开头,必须为public ,没有返回必须为void
@Test
public void testAdd() {
calculator.add(3);
calculator.add(2);
int result = calculator.getResult();
assertEquals(5, result);
}
//忽略这个测试方法
@Ignore
@Test
public void testMinus() {
fail("Not yet implemented");
} @Test
public void testMult() {
fail("Not yet implemented");
}
//抛出预定义的异常
@Test(expected=ArithmeticException.class)
public void testDiv() throws ArithmeticException {
calculator.add(8);
calculator.div(0);
int result=calculator.getResult();
assertEquals(0, result);
} @Test(timeout=5000) //超过5秒,算测试失败
public void testSqr() {
calculator.sqr();
fail("Not yet implemented");
} @Test
public void testSquare() {
fail("Not yet implemented");
} }

测试套件

package com.pb.junit;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class)
@SuiteClasses({
//测试用例类的名称
Calculator1Test.class,
Calculator2Test.class,
CalculatorTest.class })
public class TotalTest { }

Java从零开始学四十六(Junit)的更多相关文章

  1. Java从零开始学四十五(Socket编程基础)

    一.网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可 ...

  2. Java从零开始学四十四(多线程)

    一.进程与线程 1.1.进程 进程是应用程序的执行实例. 进程是程序的一次动态执行过程,它经历了从代码加载.执行到执行完毕的一个完整过程,这个过程也是进程本身从产生.发展到最终消亡的过程 特征: 动态 ...

  3. Java从零开始学四十(反射简述一)

    一.JAVA是动态语言吗? 一般而言,说到动态言,都是指在程序运行时允许改变程序结构或者变量类型,从这个观点看,JAVA和C++一样,都不是动态语言. 但JAVA它却有着一个非常突出的动态相关机制:反 ...

  4. Java从零开始学四十二(DOM解析XML)

    一.DOM解析XML xml文件 favorite.xml <?xml version="1.0" encoding="UTF-8" standalone ...

  5. Java从零开始学三十六(JAVA IO- 字符流)

    一.字符流 BufferedReader:BufferedReader是从缓冲区之中读取内容,所有的输入的字节数据都将放在缓冲区之中 BufferedWriter:把一批数据写入到缓冲区,当缓冲区区的 ...

  6. Java从零开始学二十六(包装类)

    一.包装类 包装类是将基本类型封装到一个类中.也就是将基本数据类型包装成一个类类型. java程序设计为每一种基本类型都提供了一个包装类.这些包装类就在java.lang包中.有8个包装类 二.包装类 ...

  7. Java从零开始学二十四(集合工具类Collections)

    一.Collections简介 在集合的应用开发中,集合的若干接口和若干个子类是最最常使用的,但是在JDK中提供了一种集合操作的工具类 —— Collections,可以直接通过此类方便的操作集合 二 ...

  8. Java从零开始学四十一(反射简述二)

    一.实例化Class类对象 实例化Class类对象的方法有三种: 第一种:通过forName()方法 第二种:类.class 第三种:对象.getClass() 二.Class类的常用方法 No. 方 ...

  9. Java从零开始学三十九(对象序列化)

    一.序列化 将对象的状态存储到特定存储介质中的过程 对象序列化,就是把一个对象变为二进制的数据流的一种方法,通过对象序列化可以方便的实现对象的传输或存储.   序列化保存对象的“全景图”,构建对象的“ ...

随机推荐

  1. Second Level Cache for Entity Framework 6.1

    Second Level Cache for Entity Framework 6.1 Entity Framework does not currently support caching of q ...

  2. 【原创】MYSQL++源码剖析——前言与目录

    终于完成了! 从第一次想写到现在真的写好大概花了我3个月时间.原来一直读人家的系列文章,总感慨作者的用心良苦和无私奉献,自己在心里总是会觉得有那么些冲动也来写一个. 最开始的麻烦是犹豫该选哪个主题.其 ...

  3. Android版Ftp服务端软件

    分享一款开发的Android版Ftp服务端软件,支持Android4.0及以上版本,可以实现局域网无线传输文件到手机,或者把手机上的多媒体文件分享到iPad等设备来扩展这些设备的存储空间,详情请见软件 ...

  4. 斐波那契堆(三)之 Java的实现

    概要 前面分别通过C和C++实现了斐波那契堆,本章给出斐波那契堆的Java版本.还是那句老话,三种实现的原理一样,择其一了解即可. 目录1. 斐波那契堆的介绍2. 斐波那契堆的基本操作3. 斐波那契堆 ...

  5. 火狐浏览器修改userAgent

    火狐浏览器修改userAgent的办法: 在火狐浏览器地址栏输入“about:config”,按下回车进入设置菜单. 找到“general.useragent.override”,如果没有这一项,则点 ...

  6. [Node.js] ECMAScript 6中的生成器及koa小析

    原文地址:http://www.moye.me/2014/11/10/ecmascript-6-generator/ 引子 老听人说 koa大法好,这两天我也赶了把时髦:用 n 安上了node 0.1 ...

  7. UliPad 初体验----python 开发利器

    学习python 有段时间,最近博客更新比较慢了,空闲时间在零零碎碎的学python ,难成文,也就没整理成博客. 学习python 最苦恼的就是没有趁手IDE ,之前学java 时 Eclipse  ...

  8. iOS-UIView-设置背景图片4种方式

    一 . 设置UIView的背景图片 1.将图片作为UIView的背景色,该方法过于占内存,不建议使用.     //1.imageNamed方式 self.view.backgroundColor = ...

  9. android基础---->JSON数据的解析

    上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...

  10. PHP去除BOM头的方法

    BOM头是UTF-8来告诉编辑器:我是UTF8编码.它的编码是\xEF\xBB\xBF 但是PHP在设计之初并没有考虑到BOM头的问题,所以在编解码的时候很容易出现问题   比如今天遇到的问题,jso ...