`

用JUNIT测试堆栈的例子

阅读更多

package com.test.junit;

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 com.test.junit;

import com.test.junit.MyStack;

import junit.framework.Assert;
import junit.framework.TestCase;

public class MyStackTest extends TestCase
{
	private MyStack myStack;

	public void setUp()
	{
		myStack = new MyStack();
	}

	public void testPush()
	{
		try
		{
			myStack.push("hello world");
		}
		catch (Exception e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		String result = null;
		try
		{
			result = myStack.pop();
		}
		catch (Exception e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		Assert.assertEquals("hello world", result);
	}

	public void testPush2()
	{
		for (int i = 0; i < 100; ++i)
		{
			try
			{
				myStack.push(i + "");
			}
			catch (Exception e)
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		for (int i = 0; i < 100; ++i)
		{
			String result = null;
			try
			{
				result = myStack.pop();
			}
			catch (Exception e)
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			Assert.assertEquals((99 - i) + "", result);
		}
	}

	public void testPush3()
	{
		Throwable tx = null;

		try
		{
			for (int i = 0; i <= 100; ++i)
			{
				myStack.push(i + "");
			}

			Assert.fail();
		}
		catch (Exception e)
		{
			e.printStackTrace();
			tx = e;
		}

		Assert.assertNotNull(tx);
		Assert.assertEquals(Exception.class, tx.getClass());
		Assert.assertEquals("数组越界异常!", tx.getMessage());
	}

	public void testPop()
	{
		Throwable tx = null;

		try
		{
			myStack.pop();
			Assert.fail();
		}
		catch (Exception e)
		{
			e.printStackTrace();
			tx = e;
		}
		Assert.assertNotNull(tx);
		Assert.assertEquals(Exception.class, tx.getClass());
		Assert.assertEquals("数组越界异常!", tx.getMessage());
	}

	public void testTop()
	{
		try
		{
			myStack.push("hello world");

			String result = myStack.top();

			Assert.assertEquals("hello world", result);
		}
		catch (Exception ex)
		{
			ex.printStackTrace();
		}
	}

	public void testTop2()
	{
		Throwable tx = null;

		try
		{
			myStack.top();

			Assert.fail();
		}
		catch (Exception e)
		{
			e.printStackTrace();
			tx = e;
		}
		Assert.assertNotNull(tx);
		Assert.assertEquals(Exception.class, tx.getClass());
		Assert.assertEquals("数组越界异常!", tx.getMessage());
	}

	public void testDelete()
	{
		try
		{
			for (int i = 0; i < 10; ++i)
			{
				myStack.push(i + "");
			}

			myStack.delete(10);
		}
		catch (Exception ex)
		{
			ex.printStackTrace();
			Assert.fail();
		}
	}

	public void testDelete2()
	{
		Throwable tx = null;

		try
		{
			for (int i = 0; i < 10; ++i)
			{
				myStack.push(i + "");
			}

			myStack.delete(11);

			myStack.push("hello world");
		}
		catch (Exception ex)
		{
			ex.printStackTrace();
			tx = ex;
		}

		Assert.assertNotNull(tx);
		Assert.assertEquals(Exception.class, tx.getClass());
		Assert.assertEquals("数组越界异常!", tx.getMessage());
	}

}
 
分享到:
评论

相关推荐

    Junit and Eclipse

    1. **选择一种或多种策略**:用于将JUnit测试整合到开发过程中。 2. **配置环境**:设置Eclipse和JUnit环境以支持持续测试。 3. **创建测试案例**:利用Eclipse提供的向导来快速创建测试案例。 4. **编写单元测试**...

    junit-4.8.jar.zip

    在这个例子中,`testAddition`方法使用了`assertEquals`来验证`MyBusinessLogic`类的`add`方法是否按预期工作。 IDEA提供了一流的单元测试支持,可以直接运行单个测试方法或者整个测试类,还可以查看详细的测试报告...

    JUnit学习--带附件

    另外,JUnit4还支持参数化测试,即使用不同的输入数据运行同一个测试方法,这可以通过`@Parameters`注解和`@Test`注解配合实现。 最后,JUnit4提供了丰富的扩展性,例如通过`Assume`类可以设置先决条件,确保测试只...

    Python自动化测试框架之pytest详解

    pytest是Python领域内广泛使用的自动化测试框架,以其简洁、易用和高度可扩展性而备受青睐。本篇将详细介绍pytest的安装、配置以及高级特性,帮助从事软件测试的技术人员快速掌握并应用于企业级自动化框架平台的构建...

    vallado:一个支持使用 Java 8 Lambda 测试异常的库。 可以与 JUnit 和 TestNG 一起使用

    例如,一个简单的使用Vallado测试Lambda的例子可能是这样的: ```java import static com.vallado.Vallado.assertThrows; @Test public void testLambdaException() { Function, Integer&gt; lambda = (s) -&gt; { ...

    opentest4j-1.2.0.zip

    4. 测试结果报告:OpenTest4J提供了详细的测试结果报告,包括失败的测试用例、异常堆栈跟踪等,帮助开发者快速定位问题。 三、API详解 OpenTest4J 1.2.0版本中,主要包括以下几个关键API: 1. `org.opentest4j....

    jSimpleBug的教程和代码

    2. **测试用例的编写**:Swarm支持JUnit和TestNG等流行的测试框架,你可以使用这些框架定义测试类和测试方法。Swarm提供了一些注解,如`@RunWith(Swarm.class)`,以启用Swarm的特性。 3. **测试套件和分类**:Swarm...

    《MyEclipse 6 Java 开发中文教程》1-10和12章

    10. **JUnit测试**:介绍单元测试的重要性和JUnit测试框架的使用,如何编写测试用例,以及在MyEclipse中运行和查看测试结果。 第十二章特别关注的是**开发Struts 2 Spring应用**,这通常会包括以下内容: 1. **...

    java代码-TestStack2

    在Java编程领域,TestStack是一个重要的概念,它指的是测试框架的堆栈,通常包括一系列工具和技术,用于构建和执行自动化测试。在这个名为"java代码-TestStack2"的压缩包中,我们有两个文件:`main.java`和`README....

    Java IO流的相关操作

    7. **JUnit测试**:`@Before`和`@After`注解分别标记了测试前的初始化和测试后的清理操作。`createDir()`方法展示了如何创建目录,虽然在这个例子中没有使用。 8. **异常处理**:在涉及IO操作的代码中,通常需要...

    mycalculator:使用devops工具进行管理的科学计算器

    3. **自动化测试**:利用JUnit、Selenium等工具进行单元测试和功能测试,确保mycalculator的计算结果准确无误,同时提供详尽的测试覆盖率报告。 4. **容器化**:借助Docker,mycalculator的应用环境可以被标准化和...

    webwork教程很好的学习教程

    - **测试方法**:通常使用JUnit或其他测试框架来编写Action的单元测试,覆盖不同的业务场景。 #### 八、ResultType与OGNL **ResultType**定义了Action执行完毕后如何呈现结果。 - **OGNL介绍**:OGNL是一种强大的...

    mysql官方中文参考手册

    3.6. 常用查询的例子 3.6.1. 列的最大值 3.6.2. 拥有某个列的最大值的行 3.6.3. 列的最大值:按组 3.6.4. 拥有某个字段的组间最大值的行 3.6.5. 使用用户变量 3.6.6. 使用外键 3.6.7. 根据两个键搜索 3.6.8. 根据天...

    MYSQL中文手册

    3.6. 常用查询的例子 3.6.1. 列的最大值 3.6.2. 拥有某个列的最大值的行 3.6.3. 列的最大值:按组 3.6.4. 拥有某个字段的组间最大值的行 3.6.5. 使用用户变量 3.6.6. 使用外键 3.6.7. 根据两个键搜索 3.6.8....

    MySQL 5.1参考手册中文版

    3.6. 常用查询的例子 3.6.1. 列的最大值 3.6.2. 拥有某个列的最大值的行 3.6.3. 列的最大值:按组 3.6.4. 拥有某个字段的组间最大值的行 3.6.5. 使用用户变量 3.6.6. 使用外键 3.6.7. 根据两个键搜索 3.6.8....

    MySQL 5.1参考手册

    3.6. 常用查询的例子 3.6.1. 列的最大值 3.6.2. 拥有某个列的最大值的行 3.6.3. 列的最大值:按组 3.6.4. 拥有某个字段的组间最大值的行 3.6.5. 使用用户变量 3.6.6. 使用外键 3.6.7. 根据两个键搜索 3.6.8. 根据天...

    MySQL 5.1参考手册 (中文版)

    3.6. 常用查询的例子 3.6.1. 列的最大值 3.6.2. 拥有某个列的最大值的行 3.6.3. 列的最大值:按组 3.6.4. 拥有某个字段的组间最大值的行 3.6.5. 使用用户变量 3.6.6. 使用外键 3.6.7. 根据两个键搜索 3.6.8. 根据天...

Global site tag (gtag.js) - Google Analytics