一、软件测试

软件开发:

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

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

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

二、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. 快乐的JS正则表达式(三)

    ?的用途. 小任务:匹配一段网址如var str = "http://www.123.com/";注意http也可以是https var str = "http://i. ...

  2. JS移动端滑屏事件

    来看看在pc上面的几个事件:onmousedown,onmousemove,onmouseup 我相信大家对这几个事件一定不陌生,第一个onmousedown表示鼠标按下,第二个onmousemove ...

  3. Android获取屏幕长宽

    总结了下,我遇到的获取Android屏幕长宽的方式总共有三种.大同小异,重点在于如何获取系统中的WindowManager管理类对象,方可对数据的操作: 代码如下 /** * @return 屏幕的长 ...

  4. 使用 Responsive Elements 快速构建响应式网站

    Responsive Elements 可以使任何元素来适应和应对他们所占据的区域.这是一个轻量的 JavaScript 库,你可以轻松嵌入到你的项目.元素会更具自己的宽度,自动响应和适应空间的增加或 ...

  5. js中offsetLeft,offsetTop,offsetParent计算边距方法

    封装一个函数获得任一元素在页面的位置 var GetPosition= function (obj) { var left = 0; var top = 0; while(obj.offsetPare ...

  6. C#ASP.NET 通用扩展函数之 LogicSugar 简单好用

    说明一下性能方面 还可以接受 循环1000次普通Switch是用了0.001秒 ,扩展函数为0.002秒  , 如果是大项目在有负载均衡的情况下完全可以无视掉,小项目也不会计较这点性能了. 注意需要引 ...

  7. js-DOM控制HTML

    一. dom对象控制html    HTML DOM 是 W3C 标准(是 HTML 文档对象模型的英文缩写,Document Object Model for HTML).    HTML DOM ...

  8. EF封装类,供参考!

    以下是我对EF DB FIRST 生成的ObjectContext类进行封装,代码如下,供参考学习: using System; using System.Collections.Generic; u ...

  9. Angular系列----AngularJS入门教程01:AngularJS模板 (转载)

    是时候给这些网页来点动态特性了——用AngularJS!我们这里为后面要加入的控制器添加了一个测试. 一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模 ...

  10. Team Foundation Server简介

    对于任何一个软件开发团队而言,成功的一个重要因素在于成员之间.成员与首先使用软件的用户之间有很好的沟通. Team Foundation Server是一个独立的服务器产品,逻辑上,由下列两层组成,这 ...