Java进阶API第二章

Java进阶API第二章

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

1.学校里如何测试的

java 复制代码
	//学校教的测试方法
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)https://mvnrepository.com/artifact/junit/junit

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

如果是新版本要下载依赖

Junit的引入:

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

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

2.Junit的使用

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

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

需要测试类:

java 复制代码
package com.google.apl;

public class Calc {

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

}

测试类:

java 复制代码
package com.google.apl;

public class CalcTest {

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

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

java 复制代码
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(),用来比较预期值与结果的差别。

java 复制代码
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为实际结果

    }
}

运行后可以发现错误。

java 复制代码
​
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为实际结果

    }
}

​

没有输出,结果正确。

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

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

java 复制代码
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的好处可以模块化测试,错误的模块报出错误,正确的模块通过。

相关推荐
峥嵘life6 小时前
Android16 311Y3 EAP-TLS 网络连接失败分析与修复总结
android·开发语言·人工智能·php
M-Robots echo6 小时前
轻量化裁剪方案解析:M-Robots 模块化构建,适配高低端各类机器人硬件平台
java·机器人·ros·开源社区·atomgit·m-robots
不可求~7 小时前
多模型路由怎么落地:把任务分流写进项目的最小实现
java·前端·数据库
mldong7 小时前
用 DDD 设计工作流引擎:聚合根与充血模型
java·架构
mqiqe8 小时前
AgentScope Java Harness:4. 双层记忆系统 让 Agent 拥有真正的“长期大脑“
java·开发语言
伍一518 小时前
03-文件管理模块-一个看似简单的模块藏着多少细节
java·ruoyi·若依
gugucoding9 小时前
46. 【Java】JUC并发工具:让并发更简单
java·开发语言
Nebula_g9 小时前
JavaSE基础语法:面向对象高级(代码中的成分)
java·开发语言·编程·javase·技术栈·高级语法
for_ever_love__9 小时前
python基础语法学习: 异常的传递性
开发语言·python·学习
AC赳赳老秦10 小时前
公开图片 OCR 数据提取:OpenClaw 合规采集公开信息图,识别文字与表格并转化为结构化数据
java·大数据·前端·数据库·python·php·openclaw