Junit4测试基本应用(白盒测试)

news2024/11/16 13:35:01

Junit4测试基本应用(白盒测试)

一、实验目的

掌握Junit的基本操作,进行较简单的单元测试。

二、Junit4测试的使用

1. 创建java项目JUnitText

我使用的Eclipse,在左侧Package Explorer(包资源管理器)右键,新建Java Project,输入项目名,Finish即可。

2. 创建java类calTriArea

public class calTriArea {

    public boolean judge(double a,double b,double c){

        boolean flag = false;

        if(a + b > c && a + c > b && b + c > a){

            flag = true;

        }

        if(a <= 0 || b <= 0 || c <= 0){

            flag = false;

        }

        return flag;

    }

    public double cal(double a,double b,double c) {

        double area = -1.0;

        if(judge(a, b, c)){

            if(a == b && b == c){

                area = Math.sqrt(3) / 4 * a * a ;

            }else{

                double p = (a + b + c)/2;

                area = Math.sqrt( (p * ( p - a ) * ( p - b ) * ( p - c ) ) );

            }

            return area;

        }

        return area;

    }

}

3. 给项目导入JUnit4.jar包

在项目名处点击右键,选择最下面—-Properties(特性)—>Java Build Path—>Libraries—>Add Libraries—>JUnit–>Next–>Finish

4. 编写JUnit4测试类

在要测试类处右键,选择new-Junit Text Case–Next–选择你需要测试的方法–Finish,然后就开始填充空白测试。

import static org.junit.Assert.*;



import org.junit.Test;



public class calTriAreaTest {

    private static calTriArea cal = new calTriArea();   

    @Test

    public void testJudge() {//不能构成三角形 正数

        assertEquals(false, cal.judge(2, 1, 3));

    }

    @Test

    public void testJudge1() {//可以构成三角形

        assertEquals(true, cal.judge(3, 4, 5));

    }

    @Test

    public void testJudge2() {//不能构成三角形 负数

        assertEquals(false, cal.judge(-3, -4, -5));

    }

    @Test

    public void testCal() {//等边三角形

        assertEquals(3.89711431,cal.cal(3, 3, 3),0.00001);

    }

    @Test

    public void testCal1() {//一般三角形

        assertEquals(6.0,cal.cal(3, 4, 5),0.00001);

    }

    @Test

    public void testCal2() {//不能构造三角形  正数

        assertEquals(-1.0,cal.cal(2, 1, 3),0.00001);//浮点数比较是以差值小于某个精度表示,比较两个浮点数,要加上第三个参数,表示精度

    }

    @Test

    public void testCal3() {//不能构造三角形 负数

        assertEquals(-1.0,cal.cal(-2, -1, -3),0.00001);

    }

}

5. 测试结果

运行测试类,进行测试—

二、实验任务

1)设计和实现一个程序,求三角形面积。其中等边三角形用计算三角形面积通用公式计算,而任意三角形用海伦公式计算(S=√p(p-a)(p-b)(p-c) )其中,p=(a+b+c)/2)。

2)根据编写的代码使用Junit进行测试。

三、实验步骤

1、首先理解实验内容,根据实验要求,在IDE下编写计算三角形面积程序。

package junit_test;

public class calTriArea {

    public boolean judge(double a,double b,double c){

        boolean flag = false;

        if(a + b > c && a + c > b && b + c > a){

            flag = true;

        }

        if(a <= 0 || b <= 0 || c <= 0){

            flag = false;

        }

        return flag;

    }

    public double cal(double a,double b,double c) {

        double area = -1.0;

        if(judge(a, b, c)){

            if(a == b && b == c){

                area = Math.sqrt(3) / 4 * a * a ;

            }else{

                double p = (a + b + c)/2;

                area = Math.sqrt( (p * ( p - a ) * ( p - b ) * ( p - c ) ) );

            }

            return area;

        }

        return area;

    }

}
  1. 使用白盒测试技术中的逻辑覆盖设计测试用例,形成简单的测试用例文档。

测试用例ID

a

b

c

预期输出

T1

3

4

5

6.0

T2

1

2

3

您输入的三条边不能构成三角形

T3

3

3

3

3.9

T4

-3

4

5

您输入的三条边不能构成三角形

T5

3

2

2

2.0

运行结果截图:

  1. 使用黑盒测试技术中的等价类划分设计测试用例,形成简单的测试用例文档。

测试用例ID

a

b

c

预期输出

T1

-1

-1

-5

您输入的三条边不能构成三角形

T2

6

8

10

24.0

T3

10

10

10

43.3

T4

2

4

4

3.9

T5

0

4

5

您输入的三条边不能构成三角形

运行结果截图

  1. 使用Junit编写测试类。
package junit_test;



import static org.junit.Assert.*;



import org.junit.Test;



public class calTriAreaTest {

    private static calTriArea cal = new calTriArea();   

    @Test

    public void testJudge() {//不能构成三角形 正数

        assertEquals(true, cal.judge(3, 4, 5));

    }

    @Test

    public void testJudge1() {//可以构成三角形

        assertEquals(false, cal.judge(1, 2, 3));

    }

    @Test

    public void testJudge2() {//不能构成三角形 负数

        assertEquals(true, cal.judge(3, 3, 3));

    }
    @Test

    public void testJudge3() {//不能构成三角形 负数

        assertEquals(false, cal.judge(-3, 4, 5));

    }
    @Test

    public void testJudge4() {//不能构成三角形 负数

        assertEquals(false, cal.judge(3, 2, 2));

    }

    @Test

    public void testCal() {//等边三角形

        assertEquals(6.0,cal.cal(3, 4, 5),0.00001);

    }

    @Test

    public void testCal1() {//一般三角形

        assertEquals(-1.0,cal.cal(1, 2, 3),0.00001);

    }

    @Test

    public void testCal2() {//不能构造三角形  正数

        assertEquals(3.9,cal.cal(3, 3, 3),0.00001);//浮点数比较是以差值小于某个精度表示,比较两个浮点数,要加上第三个参数,表示精度

    }

    @Test

    public void testCal3() {//不能构造三角形 负数

        assertEquals(-1.0,cal.cal(-3, 4, 5),0.00001);

    }
    @Test

    public void testCal4() {//不能构造三角形 负数

        assertEquals(2.0,cal.cal(3, 2, 2),0.00001);

    }

}



package junit_test;



import static org.junit.Assert.*;



import org.junit.Test;



public class calTriAreaTest {

    private static calTriArea cal = new calTriArea();   

    @Test

    public void testJudge() {//不能构成三角形 正数

        assertEquals(true, cal.judge(6, 8, 10));

    }

    @Test

    public void testJudge1() {//可以构成三角形

        assertEquals(false, cal.judge(-1, -1, -5));

    }

    @Test

    public void testJudge2() {//不能构成三角形 负数

        assertEquals(true, cal.judge(10, 10, 10));

    }
    @Test

    public void testJudge3() {//不能构成三角形 负数

        assertEquals(false, cal.judge(0, 4, 5));

    }
    @Test

    public void testJudge4() {//不能构成三角形 负数

        assertEquals(true, cal.judge(2, 4, 4));

    }

    @Test

    public void testCal() {//等边三角形

        assertEquals(-1.0,cal.cal(-1, -1, -5),0.00001);

    }

    @Test

    public void testCal1() {//一般三角形

        assertEquals(24.0,cal.cal(6, 8, 10),0.00001);

    }

    @Test

    public void testCal2() {//不能构造三角形  正数

        assertEquals(43.3,cal.cal(10, 10, 10),0.00001);//浮点数比较是以差值小于某个精度表示,比较两个浮点数,要加上第三个参数,表示精度

    }

    @Test

    public void testCal3() {//不能构造三角形 负数

        assertEquals(3.9,cal.cal(2, 4, 4),0.00001);

    }
    @Test

    public void testCal4() {//不能构造三角形 负数

        assertEquals(-1.0,cal.cal(0, 4, 5),0.00001);

    }

}
  1. 使用测试用例的数据驱动测试类执行,可以使用参数化测试和打包测试等方法进行自动化测试。

运行结果:(绿色√表示测试通过,蓝色√表示结果不精确,红色√表示测试通不过)

  1. 分析测试数据,根据测试结果进行程序的修改。

由Junit测试类运行结果可以看出,对于结果中蓝色√的部分应该修改运行结果,使其精度符合软件要求。

修改后运行结果如下:

7、在实验过程中进一步加强Junit测试件是应用和知识学习。

(1)、 JUnit 是一个开源的 Java 语言的单元测试框架

专门针对 Java 语言设计,使用广泛;

JUnit 是事实上的标准单元测试框架。

(2)、 JUnit 的特点

使用断言( Assertion )测试期望结果;﹣可以方便地组织和运行测试

可以方便地查看测试结果

常用 IDE (例如 IntelliJ ldea 、 eclipse )都集成了 JUnit

可以方便地集成到 Maven 。

四、JUnit 设计

TestCase :一个 TestCase 表示一个测试。

TestSuite :一个 TestSuite 包含一组 TestCase ,表示一组测试。

TestFixture :一个 TestFixture 表示一个测试环境。

TestResult :用于收集测试结果。

TestRunner :用于运行测试。

Testlistener :用于监听测试过程,手机测试数据;

Assert :用于断言测试结果是否正确。

(3)、Assert 断言常用方法:

断言相等: assertEquals (100, X );

断言数组相等: assertArrayEquals ((1,2,3, X );

浮点数断言相等:0 assertEquals (3.1416, X , 0.0001);

断言为 nul:assertNull ( X );

断言为 true / false:assertTrue ( x >0 ) / assertFalse ( x < 0 )

求三角形面积主函数:

package junit_test;

import java.util.Scanner;



public class junit_area {

public static void main(String[] args) {

// TODO Auto-generated method stub

double d;

double e;

double f;

System.out.println("请输入三角形的三条边长:");

    Scanner in=new Scanner(System.in);

    d=in.nextDouble();

    e=in.nextDouble();

    f=in.nextDouble();

    calTriArea cal=new calTriArea();

    if(cal.judge(d,e,f)) {

     System.out.printf("三角形面积是:%.8f\n",cal.cal(d,e,f));

    }else {

     System.out.println("您输入的三条边不能构成三角形!");

    }

}



}

简单软件缺陷报告:

测试模块:

对三角形求面积使用Junit测试方法进行测试

开 发 者:

测 试 员:

测试日期:

2024.6.17

软件缺陷列表

缺陷ID

缺陷详细信息

BUG1

所求结果精度不达标

BUG2

BUG3

BUG4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1859422.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

物联网 IoT 收录

物联网IoT日常知识收录 thingsboard, nodered是国际大品牌&#xff0c; iotgateway是国内的&#xff0c; 几个scada, pyscada, json-scada都还不错&#xff0c;比较一下。thingsboard-gateway是python系的&#xff0c;如果你愿意&#xff0c;可以用这个作为公司的物联网网关。…

全网最强剖析Spring AOP底层原理

相信各位读者对于Spring AOP的理解都是一知半解&#xff0c;只懂使用&#xff0c;却不懂原理。网上关于Spring AOP的讲解层出不穷&#xff0c;但是易于理解&#xff0c;让人真正掌握原理的文章屈指可数。笔者针对这一痛点需求&#xff0c;决定写一篇关于Spring AOP原理的优质博…

视频监控解决方案:视频平台升级技术方案(下)

目录 1 项目概况 2 项目需求 2.1 视频感知资源扩充 2.2 视频支撑能力升级 2.3 视频应用能力升级 3 技术设计方案 3.1系统总体架构 3.2视频感知资源扩充设计 3.3 视频支撑能力升级设计 3.4 视频应用能力升级设计 3.4.1视频资源目录管理 3.4.2标签管理 3.4.3设备智能…

万亿国债野外图传——天通卫星图传设备类目推荐

在远离都市喧嚣的辽阔自然中&#xff0c;户外工业作业以其独特的重要性日益凸显&#xff0c;涵盖了从高山峻岭的地质勘探、森林资源调查到广袤草原的生态监测等众多领域。然而传统监测方法不能全面覆盖&#xff0c;冰雪覆盖的山区和偏远地区的电力设施状况以及野生动物等户外状…

多功能推拉力测试机可实现焊球推力测试

LB-8100A 多功能推拉力测试机广泛应于与 LED 封装测试、IC 半导体封 装测试、TO 封装测试、IGBT 功率模块封装测试、光电子元器件封装测试、汽 车领域、航天航空领域、军工产品测试、研究机构的测试及各类院校的测试 研究等应用。 多功能推拉力测试机设置主要结构&#xff1a;…

DDD(data display debugger)调试工具

文章目录 DDD安装界面说明 DDD data display debugger是命令行调试程序&#xff0c;可以理解为可视化的GDB。 安装 CentOS下使用以下命令进行安装&#xff1a; yum install ddd等待安装完成即可。 界面说明 顺便写一个测试程序&#xff0c;编译可执行文件 终端命令行输入…

51单片机STC89C52RC——7.1 串口通信

目的/效果 实现单片机串口与电脑串口工具进行数据通讯&#xff0c; 1&#xff1a;设备向电脑串口发送HEX 2&#xff1a;让电脑串口工具控制单片机LED亮灭。同时让单片机反馈控制的结果。 一&#xff0c;STC单片机模块 二&#xff0c;串口通讯 2.1 串行通信与并行通信 &…

智心顾问:为心智障碍家庭带来温暖与专业支持

&#x1f499;关爱从心开始 —— 理解心智障碍 在这个世界上&#xff0c;有这样一群特殊的群体——心智障碍者。他们通常伴随着个体认知、社会互动和学习能力的障碍。这些障碍可能源于遗传、环境或未知因素&#xff0c;但不应成为他们照护者获得信息和支持的阻碍。心智障碍者的…

webStorm debug vue项目的两种方法

一、前言 本文将介绍通过webstorm对vue项目进行debugger调试的三种方案。 但是&#xff0c;不管通过那种方案&#xff0c;都无法达到类似后端idea调试的体验&#xff0c;感觉十分难受&#xff0c;不过&#xff0c;比起用console.log还是好一些。如果各位有更好的方案&#xf…

【本地知识库】本地知识库+语言大模型=知域问答

本地知识库语言大模型知域问答 本项目实质为本地知识库构建及应用&#xff0c;内容包含&#xff1a; 本地知识库构建及应用相关知识的介绍离线式本地知识库构建及应用在线式本地知识库构建及应用 本地知识库构建及应用相关知识的介绍 本地知识库 本地知识库通常是指存储在…

免费悬浮翻译器都有哪些?看剧学习都适配的翻译器分享~

不知道大家有没有设想过&#xff0c;当我们在查阅外文文档或是观看外语电影时&#xff0c;要是能够借助翻译工具来同步获取译文&#xff0c;那得有多快乐~ 不瞒大家说&#xff0c;现在想要实现这种快乐其实很简单&#xff01;只要手里头备好几个趁手的免费悬浮翻译器就可以搞定…

为冲刺IPO,喜马拉雅曝裁员20%?钉钉叶军吐槽百度搜索;美国制裁俄罗斯安全软件12名高管;华为自研语言仓颉力战Java

一、商业圈 1.钉钉总裁叶军吐槽百度搜索&#xff1a;前十条都是广告 钉钉总裁叶军在亚布力中国企业家论坛第十届创新年会上发表了演讲&#xff0c;期间他直言不讳地对百度搜索提出了批评。叶军指出&#xff0c;在OpenAI推出智能聊天机器人ChatGPT之后&#xff0c;百度的传统搜…

昇思25天学习打卡营第1天|基本介绍

今天的课程内容是MindSpore和昇腾AI全栈的整体介绍。 MindSpore 介绍 全场景深度学习框架 架构结构 扩展部分 Model Zoo 模型库Extend 扩展库&#xff08;强化学习/GNN&#xff09;Sciene 科学计算 开放部分MindExpression 统一API第三方前端 运行部分Data 数据处理AI编译…

k8s知识点

Kubernetes中Service、Ingress与Ingress Controller的作用与关系 Service 是对一组提供相同功能的 Pods 的抽象&#xff0c;并为它们提供一个统一的入口。借助 Service&#xff0c;应用可以方便的实现服务发现与负载均衡。Ingress 是反向代理规则&#xff0c;管理外部流量进入集…

环境安装-GIT

下载 git官网下载 https://git-scm.com/ 安装 点击下载的安装包&#xff0c;并点击下一步 选择安装路径&#xff0c;照例改选自定义路径 选择默认的即可 选择GIT编辑器&#xff0c;默认选择vim即可 设置初始化新项目(本地仓库)的主分支名&#xff0c;按默认即可&#xff0c;点…

web前端:作业四

1.编写一个函数&#xff0c;形参是一个数组&#xff0c;返回数组中所有数字的平均值 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><script>// 1.编写一个函数&#xff0…

基于Pytorch框架构建AlexNet模型

Pytorch 一、判断环境1.导入必要的库2.判断环境 二、定义字典1.定义字典 三、处理图像数据集1.导入必要的模块2.定义变量3.删除隐藏文件/文件夹 四、加载数据集1.加载训练数据集2.加载测试数据集3.定义训练数据集和测试集路径4.加载训练集和测试集5.创建训练集和测试集数据加载…

自定义User-Agent:使用Python Requests进行网络请求

在网络编程和数据采集领域&#xff0c;HTTP请求是与服务器交互的基本方式。User-Agent&#xff08;用户代理&#xff09;是HTTP请求中的一个重要字段&#xff0c;它告诉服务器发起请求的客户端类型和版本信息。在某些情况下&#xff0c;自定义User-Agent可以帮助我们模拟不同的…

Web 项目自动化测试主流框架都有哪些?

摘要&#xff1a;本文将详细介绍Web项目自动化测试的主流框架&#xff0c;包括Selenium、Cypress和Puppeteer。从零开始&#xff0c;我们将一步步引导您了解这些框架的使用和规范的书写。 引言&#xff1a;Web项目自动化测试是现代软件开发过程中不可或缺的一部分。它可以提高…

常微分方程算法之编程示例二(梯形法)

目录 一、研究问题 二、C代码 三、计算结果 一、研究问题 本节我们采用梯形法&#xff08;即隐式Eluer法&#xff09;求解算例。 梯形法的原理及推导请参考&#xff1a; 常微分方程算法之梯形法&#xff08;隐式Eluer法&#xff09;_梯形法求解常微分方程-CSDN博客https://…