一、软件测试

软件开发:

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

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

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

二、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. Popup 显示阴影

    WPF Popup: How to put a border around the popup? 通过设置 Border 的 margin 来为阴影留出位置,并设置 Popup: AllowsTran ...

  2. 超实用的8个Linux命令行性能监测工具

    http://www.csdn.net/article/2012-09-17/2810047-command-line-tools-to-monitor-linux-perf 你值得拥有:25个Lin ...

  3. outlook无法创建保存附件解决

    用outlook2003收发邮件时,当打开或另存附件时提示“无法创建和保存文件” 解决 开始-运行,输入“regedit”打开注册表,打开以下键值“HKEY_CURRENT_USER\software ...

  4. 【.Net底层剖析】2.stfld指令-给对象的字段赋值

    .Net底层剖析目录章节 1.[深入浅出.Net IL]1.一个For循环引发的IL 2.[.Net底层剖析]2.stfld指令-给对象的字段赋值 3.[.Net底层剖析]3.用IL来理解属性 引言: ...

  5. centos 一键安装jdk

    先检查 yum list installed |grep java 卸载JDK相关文件输入:yum -y remove java-1.7.0-openjdk*. 卸载tzdata-java输入:yum ...

  6. 轻量型ORM框架Dapper的使用

    在真实的项目开发中,可能有些人比较喜欢写SQL语句,但是对于EF这种ORM框架比较排斥,那么轻量型的Dapper就是一个不错的选择,即让你写sql语句了,有进行了关系对象映射.其实对于EF吧,我说下我 ...

  7. eclipse luna 安装 Hadoop 1.2.1 eclipse-plugin

    博主最近学习Hadoop 1.2.1,从多个搜索引擎的搜索结果当中汇合得出本文Hadoop 1.2.1 Eclipse-plugin安装过程介绍,如果你是从网上下载hadoop-eclipse-plu ...

  8. 受限玻尔兹曼机(RBM)学习笔记(五)梯度计算公式

      去年 6 月份写的博文<Yusuke Sugomori 的 C 语言 Deep Learning 程序解读>是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算 ...

  9. 创意设计展示:折叠效果在移动 App 中的应用

    在今天在移动 App 界面设计中,你可以看到不同创意类型的视觉效果.特别是在 Dribbble 上面,有有很多应用程序的 UI 概念设计,让你惊叹.当然,他们大多只是作为一个概念设计,可能永远也不会成 ...

  10. 扁平化设计的最新趋势 – 长阴影(Long Shadow)

    随着互联网的发展,网页设计变得越来越复杂,如今设计的外观和感觉实现网站功能说使用的开发技术一样重要.互联网的功能远远不只是基本的信息共享,现在人们对网站的期望是远远大于几年前的. 如今,HTML5 & ...