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. 47. Permutations II

    题目: Given a collection of numbers that might contain duplicates, return all possible unique permutat ...

  2. NSDate & NSDateFormatter

    #import <Foundation/Foundation.h>   int main(int argc, const char * argv[]) {    @autoreleasep ...

  3. Wireshark抓包分析HTTPS与HTTP报文的差异

    一.什么是HTTPS: HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换 ...

  4. PCL—低层次视觉—关键点检测(rangeImage)

    关键点又称为感兴趣的点,是低层次视觉通往高层次视觉的捷径,抑或是高层次感知对低层次处理手段的妥协. ——三维视觉关键点检测 1.关键点,线,面 关键点=特征点: 关键线=边缘: 关键面=foregro ...

  5. linux 开机自启动软件(包含xampp方法)

    linux设置apache和mysql: linux开启启动的程序一般放在/etc/rc.d/init.d/里面,/etc/init.d/是其软连接. mysql设为linux服务 cp /usr/l ...

  6. BZOJ 1004 Cards(Burnside引理+DP)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1004 题意:三种颜色的扑克牌各有Sr,Sb,Sg张.给出m种置换.两种染色方案在某种置换 ...

  7. oj放苹果

    题目描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. 输入 每个用例包含二个整数M和N.0<=m< ...

  8. java6 新特新

    JAVA6新特性介绍   1. 使用JAXB来实现对象与XML之间的映射 JAXB是Java Architecture for XML Binding的缩写,可以将一个Java对象转变成为XML格式, ...

  9. Java 日期时间

    Java 日期时间 标签 : Java基础 Date java.util.Date对象表示一个精确到毫秒的瞬间; 但由于Date从JDK1.0起就开始存在了,历史悠久,而且功能强大(既包含日期,也包含 ...

  10. BZOJ_1025_[SHOI2009]_游戏_(素数表+最小公倍数+DP)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1025 分析 对于\(n\),转一圈回来之后其实是好几个环各转了整数圈.这些环中的数为\(1,2 ...