一、软件测试

软件开发:

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

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

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

二、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. MYSQL开发性能研究——批量插入的优化措施

    一.我们遇到了什么问题 在标准SQL里面,我们通常会写下如下的SQL insert语句. INSERT INTO TBL_TEST (id) VALUES(1);   很显然,在MYSQL中,这样的方 ...

  2. unix/linux中图形界面那些事

    我们知道unix/linux刚开始的时候是没有图形界面的,随着时代的发展,排版.制图.多媒体应用越来越普遍了,这些需求都需要用到图形界面(Graphical User Interface).为此,MI ...

  3. maven pox.xml 设置主入口配置节点

    <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven ...

  4. JS阻止鼠标滚动

    var scrollFunc=function(e){ e=e || window.event; if (e.stopPropagation) e.stopPropagation(); else e. ...

  5. 【入门必备】最佳的 Node.js 学习教程和资料书籍

    Web 开发人员对 Node.js 的关注日益增多,更多的公司和开发者开始尝试使用 Node.js 来实现一些对实时性要求高,I/O密集型的业务.这篇文章中,我们整理了一批优秀的资源,你可以得到所有你 ...

  6. 基于 Markdown 的开源的 Node.js 知识库平台

    Raneto 是一个免费,开源的 Node.js 知识库平台,基于静态 Markdown 文件实现. Raneto 可以被称为静态网站生成器,因为它并不需要数据库支持.所有的内容都存储在 Markdo ...

  7. SpringMVC基础——一个简单的例子

    一.导入 jar 包 二.配置 web.xml 文件 <servlet> <servlet-name>dispatcherServlet</servlet-name> ...

  8. EntityFramework 6.1.2-beta2

    EntityFramework 6.1.2-beta2 Entity Framework is Microsoft's recommended data access technology for n ...

  9. ajax回调函数Status问题

    function readyDo() {//            alert(xhr.readyState + "分" + xhr.Status);            if ...

  10. 【JS复习笔记】02 对象与函数

    好吧,因为很重要的事情,几天没写笔记了. 关于对象: ||可以用来填充默认值,如:myApp.name || "无" &&可以用来避免错误,myApp.NameOb ...