Junit3.8 Stack测试
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测试的更多相关文章
- Cactus借助Jetty测试Servlet
这是一个WebProject,但不需要web.xml,因为用不到它 首先是待测试的LoginServlet.java package com.jadyer.servlet; import java.i ...
- 第二十三篇 玩转数据结构——栈(Stack)
1.. 栈的特点: 栈也是一种线性结构: 相比数组,栈所对应的操作是数组的子集: 栈只能从一端添加元素,也只能从这一端取出元素,这一端通常称之为"栈顶": 向栈中添加元 ...
- SpringBoot笔记(7)
一.单元测试 1.JUnit5简介 Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库 作为最新版本的JUnit框架,JUnit5与之前版本的Junit框架有很大的不 ...
- springboot单元测试 JUnit5
JUnit5简介 Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库 JUnit 5官方文档 作为最新版本的JUnit框架,JUnit5与之前版本的JUnit框架有很 ...
- 【03】SpringBoot2核心技术-核心功能—数据访问_单元测试_指标监控
3.数据访问(SQL) 3.1 数据库连接池的自动配置-HikariDataSource 1.导入JDBC场景 <dependency> <groupId>org.spring ...
- 第14章 集合框架(1)-List集合的各种类
1.概述 1.1.Java集合框架的由来 1.2.什么是集合框架? 1.3.为什么需要集合框架 1.4.常用的框架接口规范 2.Vector类 2.1.存储原理 2.2.构造方法 2.3.常用方法 3 ...
- Java魔法堂:JUnit4使用详解
目录 1. 开 ...
- Java 异常处理机制和集合框架
一.实验目的 掌握面向对象程序设计技术 二.实验环境 1.微型计算机一台 2.WINDOWS操作系统,Java SDK,Eclipse开发环境 三.实验内容 1.Java异常处理机制涉及5个关键字:t ...
- C++学习之路--类的构建以及数据转换存储
注意理解下面的代码,数据的处理与转换. 头文件: #ifndef STACK_H #define STACK_H class Stack { struct Link { void* data; Lin ...
随机推荐
- How to upgrade boost libary using apt-get ?
apt-get install libboost1.55-all-dev using version number between boost and all, but the preconditio ...
- Android开发之获取时间SystemClock
转载:http://blog.csdn.net/tianfeng701/article/details/7562359 在Andriod中关于线程一部分中经常会遇到计算时间的操作,这里面应用较多的是S ...
- python学习中,list/tuple/dict格式化遇到的问题
昨天上了python培训的第一课,学习了基础知识.包括类型和赋值,函数type(),dir(),id(),help()的使用,list/tuple/dict的定义以及内置函数的操作,函数的定义,控制语 ...
- Oracle数据泵导入导出数据,建立表空
Oracle11g 数据导入到oracle10g 中:1.在oracle11g 服务器命令行中用expdp 导出数据expdp ts/ts@orcl directory=expdp_dir dumpf ...
- iOS开发:mac使用svn管理项目
记录mac下常用的svn命令: 1.检出项目: svn checkout .../svn/projectName --username=xxx --password=xxx //将ip换成svn服务器 ...
- GET,POST,PUT,DELETE的区别
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP ...
- IIS与ASP.NET中的队列
一.IIS:应用程序池队列(Application pool queue,位于HTTP.SYS) 这是请求到达IIS后遇到的第一个队列,http.sys收到请求后会将请求放入对应的应用程序池队列,这样 ...
- HDU 1280 前m大的数【哈希入门】
题意:中文的题目= =将各种组合可能得到的和作为下标,然后因为不同组合得到的和可能是一样的, 所以再用一个数组num[]数组,就可以将相同的和都记录下来 #include<iostream> ...
- Can't dispatch DDM chunk 52454151: no handler defined
[2010-07-12 10:10:06 - Hello Google Android]ActivityManager: DDM dispatch reg wait timeout [2010-07- ...
- 移动APP服务端API设计应该考虑到的问题
2014年,移动APP的热度丝毫没有减退,并没有像桌面软件被WEB网站那样所取代, 不但如此,越来越多的传统应用.网站也都开始制作自己的移动APP,也就是我们常说的IOS客户端.android客户端. ...