Java进阶API第二章

news2024/11/27 11:44:29

Java进阶API第二章

 一. 抛出企业问题,脱离main测试,模块化编程

1.学校里如何测试的

	//学校教的测试方法
public static void main(String[] args) {

    //2.本地测试
    
    //3.调用函数
    
    //4.看输出,查看结果是否符合预期

    //5.预期结果和测试结果是通过人工计算的

    
    }
//1.编写功能函数(方法)

2.企业里如何测试的

首先了解main,main是一个程序的入口点,而不应该是处理逻辑或者功能模块的点,main方法中的语句不应该有逻辑性的语句,而且代码应该是非常之少的,更复杂的东西不应该出现在main里,应该抽离main。main方法就是进入程序的一扇门,而这个门只负责开和关,打开门可以实现某些功能,但这些功能只由门里面的东西来决定,而不是门 。 

然后引入测试框架:JUnit

JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。 

最后了解单元测试的概念:

1.单元测试指的是对软件中的独立单元进行测试,以验证这些单元的行为是否符合设计预期。这些单元可以是函数、类、方法或其他代码片段,测试可以通过手动或自动的方式进行。

2.单元测试可以帮助开发人员发现和修复代码中的缺陷,减少代码的错误率,提高代码质量,同时也有助于开发人员理解代码的功能和细节。通过不断地进行单元测试,开发人员可以确信所开发的软件在某种程度上比较健壮,并且能够快速地发现并修复任何错误,从而保障软件的质量和可靠性。

二.如何使用Junit框架

1.Junit的下载与引入

 Junit框架下载网站:Maven Repository: junit » junit (mvnrepository.com)icon-default.png?t=N7T8https://mvnrepository.com/artifact/junit/junit

选择版本号,我选择最新版,你也可以选择其他版本,点击jar下载: 

如果是新版本要下载依赖

 

 Junit的引入: 

右键单击jarAdd as library ... ,点击OK

如果是新版本依赖也要引入 

 

2.Junit的使用

在企业中会创建一个专用与测试的包(文件夹),并创建一些需要测试的类(创建一个类专门用来对另外一个类做测试),且是一对一的关系,这就是单元测试。

我们在此处为了方便,不创建包:

需要测试类: 

package com.google.apl;

public class Calc {

    public static int sum (int numberA, int numberB){
        return numberA + numberB;
    }

}

测试类:

package com.google.apl;

public class CalcTest {

    public void sum(){
        int sum = Calc.sum(1,2);
        System.out.println("sum = " + sum);
    }
}

如果你仔细观察,你会发现无法运行此类,所以需要引入Junit,在方法上面输入@Test。

package com.google.apl;

import org.junit.Test;

public class CalcTest {

    @Test //使用这条注释来调用函数,我们后期会讲注释
    public void sum(){
        int sum = Calc.sum(1,2);
        System.out.println("sum = " + sum);
    }
}

如果没有安装依赖会出现此类问题:

正确的运行结果如下:

 

 

三.Assert断言 

 遗留问题:测试的结果还是人工计算,并不是计算机帮忙完成的。这时就要用到Junit的断言测试方法Assert.assertEquals(),用来比较预期值与结果的差别。

package com.google.apl;

import org.junit.Assert;
import org.junit.Test;

public class CalcTest {

    @Test //使用这条注释来调用函数,我们后期会讲注释
    public void sum(){
        int sum = Calc.sum(1,2);

        // 断言
        Assert.assertEquals(4,sum);
        // 4为预取结果,sum为实际结果

    }
}

运行后可以发现错误。

​
package com.google.apl;

import org.junit.Assert;
import org.junit.Test;

public class CalcTest {

    @Test //使用这条注释来调用函数,我们后期会讲注释
    public void sum(){
        int sum = Calc.sum(1,2);

        // 断言
        Assert.assertEquals(3,sum);
        // 4为预取结果,sum为实际结果

    }
}

​

没有输出,结果正确。 

 

问题: 预期结果还是人为计算的。

解决:引入第一章学的随机数类:

package com.google.apl;

import org.junit.Assert;
import org.junit.Test;

import java.util.concurrent.ThreadLocalRandom;

public class CalcTest {

    @Test //使用这条注释来调用函数,我们后期会讲注释
    public void sum(){

        int numberA = ThreadLocalRandom.current().nextInt(-9999,9999);
        int numberB = ThreadLocalRandom.current().nextInt(-9999,9999);

        int sum = Calc.sum(numberA,numberB);

        // 断言
        Assert.assertEquals(numberA + numberB,sum);
        

    }
}

 

 

使用Junit的好处可以模块化测试,错误的模块报出错误,正确的模块通过。

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

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

相关文章

【开源】基于Vue和SpringBoot的大学兼职教师管理系统

项目编号: S 004 ,文末获取源码。 \color{red}{项目编号:S004,文末获取源码。} 项目编号:S004,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 学生教师管…

电动汽车多时段动态充电价格及网损策略研究

摘要:电动汽车以无序充电方式接入配电网时与网内基础用电负荷叠加,会形成峰上加峰的现象,不利于配电网的稳定运行。针对上述问题,首先对私家车充电负荷进行建模,采用蒙特卡罗抽样模拟电动汽车无序行为下的充电负荷曲线…

灵活运用Vue指令:探究v-if和v-for的使用技巧和注意事项

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 ⭐ 专栏简介 📘 文章引言 一、作…

10道高频React面试题快问快答

※其他的快问快答,看这里! 10道高频Qiankun微前端面试题快问快答 10道高频webpack面试题快问快答 20道高频CSS面试题快问快答 20道高频JavaScript面试题快问快答 30道高频Vue面试题快问快答 面试中的快问快答 快问快答的情景在面试中非常常见。 在面试…

modbus-TCP协议详解

modbus-TCP协议详解 1996年施耐德公司推出基于以太网TCP/IP的modbus协议:modbus-TCP。 MODBUS-TCP使MODBUS-RTU协议运行于以太网,MODBUS-TCP使用TCP/IP以太网在站点间传送MODBUS报文,MODBUS-TCP结合了以太网物理网络和网络标准TCP/IP以及以…

【Spring】Spring IOC DI

Spring IOC & DI IOC DI入门什么是Spring什么是容器什么是IOC IOC介绍传统程序开发解决方案 DI IOC详解Bean的存储Controller(控制器存储)Service(服务存储)Repository(仓库存储)Component(组件存储)Configuration(配置存储) 为什么需要这么多类注解类注解之间的关系方法注…

二十二、W5100S/W5500+RP2040树莓派Pico<SMTP发送邮件>

文章目录 1 前言2 简介2 .1 什么是SMTP?2.2 SMTP是如何工作的?2.3 SMTP、IMAP和POP32.4 SMTP应用场景 3 WIZnet以太网芯片4 SMTP发送邮件示例概述以及使用4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意事项6 相关链接 1 前…

VINS-Mono-后端优化 (三:视觉雅可比推导)

用逆深度是因为这样可以在优化中从优化3个变量降低到1个,降低优化的维度加快求解速度 用逆深度是因为当距离很远的时候, 1 x \frac{1}{x} x1​ x x x 就会无穷大,而3D点很近的情况也一般不会有,这也是为了数值稳定性 用逆深度的…

微服务治理

微服务治理 什么是服务治理 服务治理 是一种方法和实践,用于管理和监控分布式系统中的服务。它旨在确保服务能够在整个生命周期内可靠地运行、可维护、可扩展和符合业务需求。服务治理涉及一系列的实践、策略和工具,用于管理和优化服务的交付和运行。 …

强化学习 - DQN及进化过程(Double DQN,Dueling DQN)

1.DQN 1.1概念 DQN相对于Q-Learning进行了三处改进: 1.引入神经网络:如下图所示希望能从状态A中提取Q(s,a) 2.经验回放机制:连续动作空间采样时,前后数据具有强关联性,而神经网络训练时要求数据之间具有独立同分布特性…

GZ038 物联网应用开发赛题第4套

2023年全国职业院校技能大赛 高职组 物联网应用开发 任 务 书 (第4套卷) 工位号:______________ 第一部分 竞赛须知 一、竞赛要求 1、正确使用工具,操作安全规范; 2、竞赛过程中如有异议,可向现场考评…

双休日做什么副业?适合不同人群的副业赚钱方法

双休日是大多数人可以用来兼职或者做副业的时间,它是大家可以利用的宝贵时光。通过合理规划和努力工作,双休日的副业可以带来额外的收入,并且可以适应不同人群的需求和兴趣。那么,具体来说,适合不同人群的副业赚钱方法…

什么是特权会话管理

特权会话是由具有管理权限的用户在访问 IT 基础架构中的系统、设备或应用程序(本地或远程)时启动的 Internet 会话,包括在该会话期间执行的所有活动。 特权会话可以是数据库或安全管理员,通过 RDP 或 SSH 会话访问数据中心的机密…

Docker 安装与优化

一、安装Docker 1、关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 02、安装依赖包 yum -y install yum-utils device-mapper-persistent-data lvm2#解释 yum-utils #提供了yum-config-manager工具 device mapper #是linux内核中支持逻辑卷…

高压MOS/低压MOS在单相离线式不间断电源上的应用-REASUNOS瑞森半导体

一、前言 单相离线式不间断电源只是备援性质的UPS,市电直接供电给用电设备再为电池充电,一旦市电供电品质不稳或停电时,市电的回路会自动切断,电池的直流电会被转换成交流电接手供电的任务,直到市电恢复正常。UPS只有…

Zeitgeist ZTG Token以及其预测市场加入Moonbeam生态

波卡上的首选多链开发平台Moonbeam宣布与Zeitgeist达成XCM集成,将ZTG Token引入Moonbeam。此集成将使波卡内的Moonbeam和Zeitgeist网络之间的流动性得以流动,并通过Moonbeam的互连合约实现远程链集成。 Zeitgeist是一个基于波卡的Substrate区块链框架构…

Flink SQL自定义标量函数(Scalar Function)

使用场景: 标量函数即 UDF,⽤于进⼀条数据出⼀条数据的场景。 开发流程: 实现 org.apache.flink.table.functions.ScalarFunction 接⼝实现⼀个或者多个⾃定义的 eval 函数,名称必须叫做 eval,eval ⽅法签名必须是 p…

前端训练营:1v1私教,帮你拿到满意的offer

Hello,大家好,我是 Sunday。 熟悉我的小伙伴都知道,我最近这几年一直在做前端教育相关的工作。因为这类工作的原因,让我深刻的感受到这几年整个互联网行业的变化。 大量的公司裁员,导致找工作的人急速增加&#xff0…

解压游戏资源,导出游戏模型

游戏中有很多好看的角色,地图等等资源。 你有没有想过,把他们导出到自己的游戏中进行魔改又或则玩换肤等操作呢? 相信很多同学都喜欢拳皇中的角色, 那么我们今天就拿拳皇15举例子,导出他的资源。 首先要先安装好这个…

算法:穷举,暴搜,深搜,回溯,剪枝

文章目录 算法基本思路例题全排列子集全排列II电话号码和字母组合括号生成组合目标和组合总和优美的排列N皇后有效的数独解数独单词搜索黄金矿工不同路径III 总结 算法基本思路 穷举–枚举 画出决策树设计代码 在设计代码的过程中,重点要关心到全局变量&#xff…