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. Linux下安装、配置、启动Apache

    http://www.cnblogs.com/zhuque/archive/2012/11/03/2763352.html#

  2. YASKAWA电机控制(2)---调试

    2015 5 23 基础调试—点动 上次接线由于没有接地,导致外壳带电,非常危险. 由于上次接线端子被弄坏,这次自己重做.由于没有压线钳,只用尖嘴钳把线压近端子,有可能会松动. 接线的时候Lc1.Lc ...

  3. Atheros AR9485 ubuntu 10.04 驱动安装及networking disable问题解决

    Laptop: ACER Aspire 5733-6629 Wireless:Lite-on HB125, CHIPS: Atheros AR9485 Ubuntu: 10.04LTS (2.6.32 ...

  4. Windows下搭建MySql Master-Master Replication

    1.首先下载最新版的MySql Server (http://dev.mysql.com/downloads/windows/installer/) 2.安装MySql Server到两台机器上 My ...

  5. Asp.Net Web Api 与 Andriod 接口对接开发经验,给小伙伴分享一下!

    最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用Asp.Net Web Api去跟 Andriod 那端做接口对接工作,自己也是第一次接触Web ...

  6. HDU 3844 Mining Your Own Business(割点,经典)

    题意: 给出一个连通图,要求将某些点涂黑,使得无论哪个点(包括相关的边)撤掉后能够成功使得剩下的所有点能够到达任意一个涂黑的点,颜料不多,涂黑的点越少越好,并输出要涂几个点和有多少种涂法. 思路: 要 ...

  7. substring函数——sql

    --substring( expression, start, length ) expression待截取的文字 start 截取位置的起始下标 length 要截取的长度 --左边第一个字符的下标 ...

  8. 两个简单的python文件,实现删除本地文件夹和mongodb数据库的内容

    删除本地文件夹: import os , string , datetime ; str = '/home/niuguoqin/tmp/tomcat/'; b = (datetime.datetime ...

  9. jQuery live与bind的区别

    平时在使用jQuery进行AJAX操作的时候,新生成的元素事件会失效,有时候不得不重新绑定一下事件,但是这样做很麻烦.例如评论分页后对评论内容的JS验证会失效等.在jQuery1.3之前有一个插件会解 ...

  10. FFmpeg解码H264及swscale缩放详解

    本文概要: 本文介绍著名开源音视频编解码库ffmpeg如何解码h264码流,比较详细阐述了其h264码流输入过程,解码原理,解码过程.同时,大部分应用环境下,以原始码流视频大小展示并不是最佳方式,因此 ...