Junit单元测试1

2023-11-15

 实验 Junit单元测试1

1.实验目的

  1. 学习使用 JUnit4.X 进行单元测试;
  2. 应用 JUnit4.X 进行单元测试,为工程项目中的类,设计测试类,并且运用白盒测试和黑盒测试方法为类中的方法设计足够充分的测试用例集,从而保证 每一个类代码的正确性和健壮性。

2.实验内容

题目1: 建一个测试除法类(TestDivide),并编写相应的测试用例 Junit test case

步骤一:创建新工程JunitTest,项目结构如图所示

步骤二:创建测试类并测试,发现报错:

步骤三:修改测试类并进行测试,测试成功:

 题目2:栈(MyStack)具有 4 个方法,构建测试类 TestMyStack,对这个 4 个方法设计测试用例进行单元测试;

由题目可知MyStack类包含4个方法:push()、pop()、top()和delete()。可以编写以下测试对这4个方法进行单元测试:

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) {

e.printStackTrace();}

String result = null;

try {

result = myStack.pop();

} catch (Exception e) {

e.printStackTrace();

}

//向堆栈中压入一个元素然后再弹出一个元素,以确定元素是否压入成功

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

public void testPush22() {

for (int i = 0; i < 100; ++i) {

try {

myStack.push(i + ""); //把整数转化为字符串

} catch (Exception e) {

e.printStackTrace();

}}

for (int i = 0; i < 100; ++i) {

String result = null;

try {

result = myStack.pop();

} catch (Exception e) {

e.printStackTrace();}

//向堆栈中压入100个元素,然后再弹出100个元素,以确定元素是否压入成功

//压入时第一个元素被压入到栈底。所以弹出来的元素与压入元素的顺序相反的

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

}}

public void testPush33() {

Throwable tx = null;

try {

for (int i = 0; i <= 100; ++i) {

myStack.push(i + ""); }

Assert.fail(); //该行代码不可以写在for循环里面

} 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 testTop22() {

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 testDelete22() {

Throwable tx = null;

try {

for (int i = 0; i < 10; ++i) {

myStack.push(i + "");}

myStack.delete(11);

} catch (Exception ex) {

ex.printStackTrace();

tx = ex;}

Assert.assertNotNull(tx);

Assert.assertEquals(Exception.class, tx.getClass());

Assert.assertEquals("数组越界异常!", tx.getMessage());

}}

题目3:使用套件运行器(Suite.class),建立测试类 TestAll,对已经建立的测试类进行套件化的测试。

可创建如下测试类:

import org.junit.runner.RunWith;

import org.junit.runners.Suite;

import org.junit.runners.Suite.SuiteClasses;

@RunWith(Suite.class)

@SuiteClasses({DivideTest.class,MyStackTest.class })

public class TestAll {

}

3.实验分析

题目一按照实验指导书操作即可完成,较为简单,实现后初步了解了如何使用Eclipse来进行单元测试。题目二是对MyStack类进行测试,需要测试四个方法,我做的测试较为简单。题目三只需要编写一个简单的TestAll测试类即可。

实验思考题:

(1)在单元测试中,如何应用JUnit动手写一个类的单元测试方法,并让其成功运行?

答:导入Junit包,建立该类后使用创建Junit测试类的方法写单元测试方法,根据测试目的修改测试类后可成功运行。

(2)JUnit 4 有何特点?

答:JUnit 4是一种与其之前的版本完全不同的API,它根据Java 5.0中的新特征(注解,静态导入等)构建而成。JUnit 4更简单、更丰富和更易于使用,而且它引入了更为灵活的初始化和清理工作,还有限时的和参数化测试用例。

4.实验总结

   通过这次实验,对使用Eclipse进行单元测试有了了解。使用Eclipse进行单元测试,由于Eclipse与Junit集成,所以无需下载。但是因为junit包导入的位置错误,导致单元测试一直不成功,找不到包的位置,后来经过修改终于不再报错。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Junit单元测试1 的相关文章

随机推荐

  • JavaSE加强知识

    tips 在Java中 万物皆对象 不然我们的Java就白学了 本栏文章我们将会陆续上传以下知识 static 单例 代码块 继承 面向对象五大金刚 成员变量 方法 代码块 构造器 内部类 权限修饰符 抽象类 接口 多态 内部类 常用API
  • DDR3 终端参考电阻 rzq

    https blog csdn net chenzhen1080 article details 82951214 问题1 ddr3侧 的参考电阻和 FPGA侧 的参考电阻是不是同一个功能 同一个阻值 DDR3 器件上 要标配 240 参考
  • SGMD辛几何模态分解

    将时间序列分解为一组独立的模态分量 模态混叠情况大幅度降低 SGMD利用辛几何相似度变换来求解哈密顿矩阵的特征值 并利用其 相应的特征向量来重构单分量信号 同时 SGMD可以在没有任何用户定义参数的情况下 有效地重构现有的模式 去除噪声 该
  • Halcon中数据的四舍五入、取整、有效数字以及和字符串之间的转换

    a 3 456 取整 取最近的整数 int a int a 取整数部分 结果是3 round a round a 将输入元组转换为最接近的整数元组 结果是3 四舍五入 结果是字符串 g0 a 0f 保留0位 结果是 3 g1 a 1f 保留
  • js延迟操作

    在写前端代码的时候需要实现某些交互操作 有些效果需要停顿几秒再实现 这时可以用到下面的方法 setTimeout function 5秒后实现的方法写在这个方法里面 5 1000 延迟5000毫秒
  • 第15届全国大学生知识竞赛 2022ciscn初赛 部分wp

    Misc ez usb 1 键盘流量 USB协议数据部分在Leftover Capture Data域中 数据长度为八个字节 其中键盘击键信息集中在第三个字节中 如图 发现击键信息为0x06 即对应的按键为C 2 鼠标流量 USB协议鼠标数
  • 并发编程-Linux环境下C语言并发理解-一

    在centos7上安装gcc 使用yum命令安装还是非常easy的 yum y install gcc gcc c kernel devel 安装gcc c 编译器以及内核文件 使用VI工具编写如下代码 include
  • openssl命令基础用法:哈希

    单向加密需要使用的标准命令为 dgst 用法如下 openssl dgst md5 md4 md2 sha1 sha mdc2 ripemd160 dss1 c d hex binary out filename sign filename
  • 微信小程序项目:粤语教学平台-粤言粤语

    文章目录 1 项目简介 1 1 创意来源 1 2选题意义 2 总体设计 2 1 系统功能 2 1 1 功能概述 2 1 2 功能说明 2 2 系统软硬件平台 2 3 关键接口技术 2 4 作品特色 3 详细设计 3 1 系统结构设计 3 1
  • error C2666: “QByteRef::operator ==”: 2 个重载有相似的转换

    出现这样的问题 就是语法出现问题 以下写就是错的 以下写的就是解决了问题
  • 树莓派使用上spi tft!(fbtft的使用)

    关于树莓派的视频输出除了HDMI和 VNC基本上没有其他的方法 如果你手上刚好有一块TFT模块的话就可以当做系统显示屏 framebuff 虽然分辨率不高 但足以满足一些cmd的需求 github上项目 notro fbtft 很好的实现了
  • MyBatis使用resultMap解决1对多关联映射

    案例 查询MySQL中user表和orders表所有用户信息及用户关联的订单信息 用户信息和订单信息为一对多关系 SELECT u id u username u birthday u sex u address o id oid o nu
  • httprunner startproject.....报错

    httprunner新版本新建框架报错 问题 一开始报 cmd命令输入 httprunner startproject demo cmd结果显示 usage httprunner h V run make 我尝试降低到V2的版本 后面直接输
  • VMware虚拟机添加新硬盘

    在windows Server 2008 R2虚拟机配置中新加一块硬盘 首先在主机配置界面 打开虚拟主机设置 gt 添加一个新的硬盘组件 gt 选择磁盘接口类型 gt 创建新磁盘 gt 分配磁盘空间 gt 下一步安装 具体操作流程看下图 注
  • ARMV8体系结构简介:AArch64系统级体系结构之编程模型(3)- 异常

    1 前言 本文介绍异常相关内容 包括异常类型 异常进入 异常返回 异常层次结构 异常的路由等 2 RESET ARMV8体系结构支持两种类型的RESET Cold reset Reset PE所有的逻辑 包括集成的debug功能 Warm
  • Netty 全网最详细的教程! 没有之一!

    Netty 入门 文章目录 Netty 入门 入门案例 1 服务器端代码 2 客户端代码 3 运行流程 组件解释 使用组件 EventLoop 创建一个EventLoopServer 创建一个Client 细分 EventLoopGroup
  • Kubernetes Pod 故障归类与排查方法

    1 Pod 概念 Pod是kubernetes集群中最小的部署和管理的基本单元 协同寻址 协同调度 Pod是一个或多个容器的集合 是一个或一组服务 进程 的抽象集合 Pod中可以共享网络和存储 可以简单理解为一个逻辑上的虚拟机 但并不是虚拟
  • vue 锚点双向滚动监听

  • 欧拉角,轴角,四元数与旋转矩阵详解

    入门小菜鸟 希望像做笔记记录自己学的东西 也希望能帮助到同样入门的人 更希望大佬们帮忙纠错啦 侵权立删 目录 一 欧拉角 1 静态定义 2 欧拉角的表示 3 欧拉角表示的优缺点 4 欧拉角的万向节死锁 静态不存在万向锁的问题 二 四元数 1
  • Junit单元测试1

    实验五 Junit单元测试1 1 实验目的 学习使用 JUnit4 X 进行单元测试 应用 JUnit4 X 进行单元测试 为工程项目中的类 设计测试类 并且运用白盒测试和黑盒测试方法为类中的方法设计足够充分的测试用例集 从而保证 每一个类