package test;

 public class MyStack
{
private String[] elements; private int nextIndex; public MyStack()
{
elements = new String[100];
nextIndex = 0;
} public void push(String element) throws Exception
{
if(100 == nextIndex)
{
throw new Exception("数组越界异常!");
} elements[nextIndex++] = element;
} public String pop() throws Exception
{
if(0 == nextIndex)
{
throw new Exception("数组越界异常!");
} return elements[--nextIndex];
} public void delete(int n) throws Exception
{
if(nextIndex - n < 0)
{
throw new Exception("数组越界异常!");
} nextIndex -= n;
} public String top() throws Exception
{
if(0 == nextIndex)
{
throw new Exception("数组越界异常!");
} return elements[nextIndex - 1];
} } package junit; import junit.framework.Assert;
import junit.framework.TestCase; @SuppressWarnings("deprecation")
public class MyStackTest extends TestCase
{
private MyStack myStack; @Override
public void setUp() throws Exception
{
myStack = new MyStack();
} //测试正常情况的一般情况,向栈内放入一个元素,然后取出。
public void testPush()
{
try
{
myStack.push("hello world");
}
catch (Exception e)
{
Assert.fail();
} String result = null; try
{
result = myStack.pop();
}
catch (Exception ex)
{ } Assert.assertEquals("hello world", result);
} //测试正常情况的临界情况,即放入100个元素栈是否会出错
public void testPush2()
{
for (int i = 0; i < 100; i++)
{
try
{
myStack.push(i + "");
}
catch (Exception ex)
{
Assert.fail();
}
} for (int i = 0; i < 100; i++)
{
String result = null; try
{
result = myStack.pop();
}
catch (Exception ex)
{ } Assert.assertEquals((99 - i) + "", result);
}
} //测试异常情况,101个元素输入
public void testPush3()
{
Exception tx = null; try
{
for (int i = 0; i <= 100; i++)
{
myStack.push(i + "");
} Assert.fail();
}
catch (Exception ex)
{
tx = ex;
} assertData(tx);
} public void testPop()
{
try
{
myStack.push("hello world");
}
catch (Exception e)
{ } String result = null; try
{
result = myStack.pop();
}
catch (Exception ex)
{
Assert.fail();
} Assert.assertEquals("hello world", result);
} public void testPop2()
{
Throwable tx = null; try
{
myStack.pop(); Assert.fail();
}
catch (Exception ex)
{
tx = ex;
} assertData(tx);
} public void testPop3()
{
Throwable tx = null; try
{
myStack.push("hello");
}
catch (Exception ex)
{ } try
{
myStack.pop();
myStack.pop(); Assert.fail();
}
catch (Exception ex)
{
tx = ex;
} assertData(tx);
} public void testTop()
{
try
{
myStack.push("hello");
}
catch (Exception ex)
{ } String result = null; try
{
result = myStack.top();
}
catch (Exception ex)
{
Assert.fail();
} Assert.assertEquals("hello", result);
} public void testTop2()
{
Throwable tx = null; try
{
myStack.top(); Assert.fail();
}
catch (Exception ex)
{
tx = ex;
} assertData(tx);
} public void testDelete()
{
try
{
for (int i = 0; i < 10; i++)
{
myStack.push(i + "");
} myStack.delete(10);
}
catch (Exception ex)
{
Assert.fail();
}
} public void testDelete2()
{
Throwable tx = null; try
{
for (int i = 0; i < 10; i++)
{
myStack.push(i + "");
} myStack.delete(11); Assert.fail();
}
catch (Exception ex)
{
tx = ex;
} assertData(tx);
} private void assertData(Throwable tx)
{
Assert.assertNotNull(tx);
Assert.assertEquals(Exception.class, tx.getClass());
Assert.assertEquals("数组越界异常!", tx.getMessage());
} }

Junit3.8 Stack测试的更多相关文章

  1. Cactus借助Jetty测试Servlet

    这是一个WebProject,但不需要web.xml,因为用不到它 首先是待测试的LoginServlet.java package com.jadyer.servlet; import java.i ...

  2. 第二十三篇 玩转数据结构——栈(Stack)

          1.. 栈的特点: 栈也是一种线性结构: 相比数组,栈所对应的操作是数组的子集: 栈只能从一端添加元素,也只能从这一端取出元素,这一端通常称之为"栈顶": 向栈中添加元 ...

  3. SpringBoot笔记(7)

    一.单元测试 1.JUnit5简介 Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库 作为最新版本的JUnit框架,JUnit5与之前版本的Junit框架有很大的不 ...

  4. springboot单元测试 JUnit5

    JUnit5简介 Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库 JUnit 5官方文档 作为最新版本的JUnit框架,JUnit5与之前版本的JUnit框架有很 ...

  5. 【03】SpringBoot2核心技术-核心功能—数据访问_单元测试_指标监控

    3.数据访问(SQL) 3.1 数据库连接池的自动配置-HikariDataSource 1.导入JDBC场景 <dependency> <groupId>org.spring ...

  6. 第14章 集合框架(1)-List集合的各种类

    1.概述 1.1.Java集合框架的由来 1.2.什么是集合框架? 1.3.为什么需要集合框架 1.4.常用的框架接口规范 2.Vector类 2.1.存储原理 2.2.构造方法 2.3.常用方法 3 ...

  7. Java魔法堂:JUnit4使用详解

    目录                                                                                              1. 开 ...

  8. Java 异常处理机制和集合框架

    一.实验目的 掌握面向对象程序设计技术 二.实验环境 1.微型计算机一台 2.WINDOWS操作系统,Java SDK,Eclipse开发环境 三.实验内容 1.Java异常处理机制涉及5个关键字:t ...

  9. C++学习之路--类的构建以及数据转换存储

    注意理解下面的代码,数据的处理与转换. 头文件: #ifndef STACK_H #define STACK_H class Stack { struct Link { void* data; Lin ...

随机推荐

  1. HDU5093——Battle ships(最大二分匹配)(2014上海邀请赛重现)

    Battle ships Problem DescriptionDear contestant, now you are an excellent navy commander, who is res ...

  2. weblogic11g 安装集群 —— win2003 系统、单台主机

    weblogic11g 安装集群 —— win2003 系统.单台主机 注意:此为weblogic11g  在win2003系统下(一台主机)的安装集群,linux.hpux.aix及多个主机下原理一 ...

  3. python类似微信未读信息图片脚本

    其实就是实现一个效果,给一张图片,然后再右上角给出未读的信息数目,就像我们打开微信的时候,总是看到红点就忍不住想要点击去查看一样. 类似这种效果: 可以知道,图片是给定的,那么只要随机生成一个数字,然 ...

  4. hdu 4920 Matrix multiplication (矩阵计算)

    题目链接 题意:给两个矩阵a, b, 计算矩阵a*b的结果对3取余. 分析:直接计算时间复杂度是O(n^3),会超时,但是下面第一个代码勉强可以水过,数据的原因. #include <iostr ...

  5. android上的缓存、缓存算法和缓存框架

      1.使用缓存的目的 缓存是存取数据的临时地,因为取原始数据代价太大了,加了缓存,可以取得快些.缓存可以认为是原始数据的子集,它是从原始数据里复制出来的,并且为了能被取回,被加上了标志. 在andr ...

  6. UVa 116 (多段图的最短路) Unidirectional TSP

    题意: 有一个m行n列的正整数环形矩阵(即矩阵第一行的上一行是最后一行,最后一行的下一行是第一行),从第一列的任意位置出发,每次只能向右,右上,右下三个方向行走,输出路径及路径上所有数之和的最大值,多 ...

  7. uva 10054 The Necklac(欧拉回路)

    明显的欧拉回路,把颜色作为点,建图后,做一遍欧拉回路.不过我是现学的,打印路径上纠结了一下,发现随着FindEuler()的递归调用的结束,不断把点压入栈中,从后向前打印,遇到"支路&quo ...

  8. VS2010下编译安装DarwinStreamingServer5.5.5

    源码下载链接:http://dss.macosforge.org/源码版本: 5.5.5版本电脑环境:visual studio2010,window 7 x64系统.用VS2010打开WinNTSu ...

  9. Spring学习之Ioc

    Ioc原理讲解:http://www.cnblogs.com/xdp-gacl/p/4249939.html Ioc IoC是一种编程思想,由主动编程变为被动接收. 也就是说,所有的组件都是被动的(p ...

  10. MySql表中key的区别

    我们看到Key那一栏,可能会有4种值,即'啥也没有','PRI','UNI','MUL'1. 如果Key是空的, 那么该列值的可以重复, 表示该列没有索引, 或者是一个非唯一的复合索引的非前导列2. ...