JUnit单元测试详解

单元测试(Junit) 单元测试 阅读详情

本次为大家带来关于深度思考的一个问题,我们为什么要使用单元测试?

1.背景介绍

JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。JUnit 促进了“先测试后编码”的理念,强调建立测试数据的一段代码,可以先测试,然后再应用。这个方法就好比“测试一点,编码一点,测试一点,编码一点……”,增加了程序员的产量和程序的稳定性,可以减少程序员的压力和花费在排错上的时间。单元测试是一个对单一实体(类或方法)的测试。单元测试是每个软件公司提高产品质量、满足客户需求的重要环节。

2.知识剖析

一:JUnit的特点:

JUnit 是一个开放的资源框架,用于编写和运行测试。

提供注释来识别测试方法。

提供断言来测试预期结果。

提供测试运行来运行测试。

JUnit 测试允许你编写代码更快,并能提高质量。

JUnit 优雅简洁。没那么复杂,花费时间较少。

JUnit 测试可以自动运行并且检查自身结果并提供即时反馈。所以也没有必要人工梳理测试结果的报告。

JUnit 测试可以被组织为测试套件,包含测试用例,甚至其他的测试套件。

JUnit 在一个条中显示进度。如果运行良好则是绿色;如果运行失败,则变成红色。

二:断言

在JUnit中为我们提供了一些辅助函数,他们用来帮助我们确定被测试的方法是否按照预期的效果正常工作,通常,这些辅助函数被称为断言。

断言的关键词是assert。断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过。

我们来看看断言的核心方法:

三:执行过程

有时候,我们在运行某个方法之前,可能需要先执行另一个方法,而在测试类中看,每一个方法之间都是独立的,手动去运行总有些不方便。

Junit为我们准备了一套注解,来方便我们决定JUnit 中的方法执行过程,即哪一个方法首先被调用,哪一个方法在一个方法之后调用。

下面是关于决定执行顺序的注解

1,@BeforeClass修饰的方法

会在所有方法被调用前被执行;而且该方法是静态的,

所以当测试类被加载后接着就会运行它,

而且在内存中它只会存在一份实例,

它比较适合加载配置文件;

比如数据的连接文件等;

2,@AfterClass所修饰的方法通常用来对资源的清理,

如数据库的关闭;

3,@Before和@After会在每个测试方法前后执行;

通常被称为固定代码(fixure),就是一定会执行的代码.

4.忽略测试

有时可能会发生我们的代码还没有准备好的情况,这时测试用例去测试这个方法或代码的时候会造成失败。@Ignore 注释会在这种情况时帮助我们。

  • 一个含有 @Ignore 注释的测试方法将不会被执行。

  • 如果一个测试类有 @Ignore 注释,则它的测试方法将不会执行。

四:套件测试

随着开发规模的深入和扩大,项目或越来越大,相应的我们的测试类也会越来越多;那么就带来一个问题,假如测试类很多,就需要多次运行,造成测试的成本增加;

此时就可以使用junit批量运行测试类的功能,junit test suite,测试套件;每次运行测试类,只需要执行一次测试套件类就可以运行所有的测试类;

五:时间测试

Junit 中还为我们提供了一个暂停的方便选项。

如果一个测试用例比起指定的毫秒数花费了更多的时间,那么 Junit 将自动将它标记为失败。

六:异常测试

Junit 用代码处理提供了一个追踪异常的选项。你可以测试代码是否它抛出了想要得到的异常。

expected 参数和 @Test 注释一起使用。现在让我们看看活动中的 @Test(expected)。

可以说,异常测试是一个很方便的东西,可以让我们去检测抛出的异常是否能够完成其功能。

Junit中准备了几种异常测试的注解:

1.@Test(expected…)

2.ExpectedException

3.Try/catch with assert/fail

七:参数化测试

有时候会对相同的代码结构做同样的操作,不同的时对参数的设置数据和预期结果;

有没有好的办法提取出来相同的代码,提高代码的可重用度,

junit4中使用参数化设置,来处理此种场景

3.常见问题

1.为什么需要单元测试?

4.解决方案

单元测试使得我们可以放心修改、重构业务代码,而不用担心修改某处代码后带来的副作用。单元测试可以帮助我们反思模块划分的合理性,如果一个单元测试写得逻辑非常复杂、或者说一个函数复杂到无法写单测,那就说明模块的抽象有问题。单元测试使得系统具备更好的可维护性、具备更好的可读性;对于团队的新人来说,阅读系统代码可以从单元测试入手,一点点开始后熟悉系统的逻辑。

5.编码实战

6.更多讨论

7.参考文献

文章链接:https://www.cnblogs.com/august-shi/p/6720426.html

文章作者:DominicaT

文章链接:https://www.w3cschool.cn/junit/

文章作者: w3cschool

8.更多讨论

1.为什么系统默认打包之前要运行一遍测试类?而打包又不打包测试类呢?

打包程序在打包的时候,会将测试类进行编译。

2.使用断言测试 和平时我们不用断言 它的优点是什么

在简单的逻辑上看起来断言用处和我们平常使用的输出判断语句差不多,但是在面对稍微多一点代码或者复杂一点的逻辑的时候,断言可以让我们不需要经过人的判断就得出正确的答案,这一点上可以让开发人员拥有更高的效率。而且,面对复杂逻辑,人并不一定能够知道正确的结果是什么,而交给自动测试,就可以让程序的结果清晰明朗。

3.哪些地方需要写单元测试?

在日常开发中,不要认为写单元测试带来了额外的工作。看似降低了开发效率。实际上,单元测试能够带给后期维护极大地的便利。 大部分的bug也都能通过单元测试测试出来,提前消灭在萌芽中。在重要的算法中,核心业务逻辑必须单元测试通过。在单元测试中:我们应尽量保持测试方法的原子性。也就是说,单元测试粒度越小越好。

【软件测试】Junit 理论+实践 —— 适合初学者的单元测试 介绍适合初学者学习的 JUnit单元测试框架 阅读详情

相关推荐

Junit单元测试

测试种类与测试方法的分类 单元测试:主要测试模块在语法,逻辑上的错误,例如,测试java中定义的一个类是否符合预期的效果,它通常由开发人员来完成。 为什么需要Junit测试 Junit测试属于单元测试,可以用于我们在实现项目的时候,方便进行对某些模块的检测,免得我们全部类都写完运行的时候,报一大堆的错误,脑壳痛~ Junit单元测试的使用 使用步骤 1.定义一个测试类,也称测试用例 推荐命名 : 1.测试类的命名:被测试的类Test 2.包名的命名:xx.test ...

qq_53124400的博客 725

JUnit单元测试

JUnit是一种Java语言的单元测试框架,它是最流行的单元测试框架之一。它提供了一些可用于编写和运行测试的API,并且可以生成测试报告。JUnit适用于所有Java语言的项目,例如Java应用程序、Java Servlet、Java EE应用程序以及Android应用程序等。

weixin_44084024的博客 4206

Junit 单元测试(详解)_junit测试

JUnit 是一种流行的单元测试框架,它可以帮助开发人员编写、运行和调试单元测试,以确保代码的正确性。在本篇博客中,我们将介绍 JUnit 的基本概念、特点和用法,以及如何编写和运行单元测试。

2401_87378147的博客 1149

Java单元测试

单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。“单元”可以是一个函数、方法、类、功能模块或者子系统。单元测试的核心在于行、分支覆盖率,不关注业务正确性。

yyp0719的博客 7942

JUnit5 单元测试详解

文章介绍Java单元测试相关知识。单元测试针对软件最小可测试单元,能降低错误风险、提升代码质量。JUnit 5是流行的Java单元测试框架,引入方式有Maven和Gradle,也可从官方仓库下载jar包,可在项目结构中查看是否引入成功。编写单元测试时,类名遵循被测试类名+Test,方法用@Test注解,返回值为void且无参数,通过断言判断期望值和实际值。JUnit 5提供多种常用注解,可解决Scanner失效问题,还有忽略测试、超时测试等高级功能,合理使用可提升代码质量。

m0_73941339的博客 2745

219页华为供应链管理:市场预测S&OP计划、销售预测与存货管理精要

S&OP计划的整合作用:S&OP是一种综合的销售和运营计划流程,它将市场预测、生产能力、库存水平和财务目标整合在一起,以确保企业能够平衡供需,实现最佳的运营效率。持续监控与改进:市场预测、S&OP计划、计划委员会的决策以及存货管理都需要持续的监控和评估。供应链策略与执行:华为ISC拥有清晰的供应链策略,并通过SISC架构实现了策略的有效执行,包括供应链网络设计、库存管理、物流优化等。持续的供应链创新:华为ISC不断探索新的供应链管理方法和技术,如数字化供应链、智能物流等,以适应全球化和市场的快速变化。

zuoan1993的博客 2432

JUnit 单元测试(详解)

本文为JUnit单元测试相关知识,下边将对JUnit单元测试概念,JUnit安装与使用,编写和运行@Test单元测试方法,设置执行JUnit用例时支持控制台输入,定义test测试方法模板等进行详尽介绍~

共同学习,共同成长 1944

别再手动备份了!用Python脚本批量导出华为/华三交换机配置(附完整代码)

本文详细介绍了如何使用Python脚本实现华为/华三交换机配置的自动化备份,大幅提升网络运维效率。通过paramiko库建立SSH连接,结合pandas处理设备清单,实现配置的批量导出与规范化存储,解决传统手动备份耗时易错的问题。

weixin_28737603的博客 448

Junit单元测试详解

大家好,我是IT修真院深圳分院的学员,一枚正直纯洁善良的JAVA程序员。本次为大家带来关于深度思考的一个问题,我们为什么要使用单元测试?1.背景介绍JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。JUnit 促进了“先测试后编码”的理念,强调建立测试数据的一段代码,可以先测试,...

KOKjock的博客 798

数据行小于列索引,内部模式表示可能存在问题

通过检查数据源的完整性和一致性,检查Debezium配置,检查列映射以及启用调试模式和日志记录,您应该能够解决这个错误。请注意,具体的解决方法可能因您的具体情况而异,因此您可能需要根据问题的根本原因进行适当的调整和修复。如果问题仍然存在,您可能需要进一步检查您的数据和配置,并根据具体情况进行调整和修复。在Debezium中,您可以使用列重命名和列映射来定义源和目标之间的列映射关系。通过检查日志,您可以查看详细的错误信息和堆栈跟踪,从而更好地理解问题的根本原因。首先,我们应该检查数据源的完整性和一致性。

XbtoMemory的博客 729

短信验证码逻辑漏洞学习——各种绕过姿势技巧

短信验证码逻辑漏洞学习——各种绕过姿势技巧

记录并分享学习安全的知识点.. 2555

JUnit4 / JUnit 5 全面详解【单元测试、Maven】

JUnit4 / JUnit 5 全面详解【单元测试、Maven】

青年有志 1万+

[QMT量化交易小白入门]-七、可转债双低策略Python代码详解与实战

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步,自己淋过雨了,希望大家都有一把伞。

木头大左的博客 3830

单元测试之Junit4详解(真)

单元测试之Junit4详解(真) GitHub官网地址 文章目录单元测试之Junit4详解(真)@[toc]代码测试什么是单元测试**为什么要使用单元测试**Android中的测试注意Junit介绍使用导入依赖基本使用,断言方法测试套件参数化测试分类测试假设测试断言方法assertArrayEqualsassertEqualsassertNotEquals()assertNull()ass...

qq_43520650的博客 2205

1分钟了解LangChain是什么?

是一个基于大型语言模型(LLM)开发应用程序的框架, 它旨在简化语言模型应用的开发流程,特别是在构建对话系统和其他基于语言的AI解决方案时.目标是将复杂的语言模型技术转化为可通过简单API调用实现的功能,从而使开发者能够更加专注于创造性的解决方案设计。高效地解决了开发大语言模型应用的痛点问题。Langchain 最主要的特色是可以将 LLM 应用研发过程中的交互 Prompt、LLM 模型调用、语言模型与环境互动的自适应等方式融为一体。

gorgor在码农 2630

WPF+MVVM案例实战(二十三)- 阴影效果详解

通过附加属性实现阴影效果,通过改变不同的阴影属性值达到不同阴影效果

lingshuangcanxue 559

Springboot中JUNIT5单元测试+Mockito详解

单元测试:针对方法(最小功能单元)的测试,由程序员自己写。 JUnit是什么:一种帮助我们编写测试的标准测试框架。不使用单元测试时,我们测试一个方法能否成功运行,我们会在主方法里调用这个方法,看看控制台的运行结果。 或者更直接的把需要测试代码放到主方法里,看能不能运行成功。 局限性:但是使用这种方式测试代码局限性很大,比如只有一个main方法无法有组织有层次的测试不同的方法。比如测试的输出结果不够直观。所以我们需要专门的JUnit来编写单元测试IDE工具为IDEASpringBoot的包中,默认集成了JUn

baomingshu的博客 7887

Transformer实战(1)——词嵌入技术详解

词嵌入的核心思想是,通过将词语表示为稠密的向量,使得计算机可以更有效地处理和理解文本中的语义关系。在本节中,我们学习了单词分布式表示的概念及其实现,包括静态嵌入和动态嵌入,实现了 Word2Vec 和 GloVe 模型,并介绍了如何使用 Gensim API 探索嵌入空间。

盼小辉丶的博客 1万+

单元测试Junit使用详解

Junit单元测试 1. 使用步骤 (1) 创建测试类: 命名建议: ① 类名:被测试的类名Test ② 包名:xxx.xxx.test (2) 创建测试方法: 命名建议: ① 方法名:test测试的方法名 ② 返回值:void ③ 参数列表:空参 (3) 在测试方法之前(上一行)写@Test (4) 导入Junit依赖环境: 方式一: 方式二: 以上两种方式的最终步骤: 2. 判定结果 (1) 运行测试方法后控制台提示颜色为绿色表示无误,控制台为红色表示有误 (2) 一般使用断言Assert中的静态

立志成为一个前端、后端、测试全方位发展的程序员 1369

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Junit 单元测试(详解)

本博主将用优快云记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!JUnit 是一种流行的单元测试框架,它可以帮助开发人员编写、运行和调试单元测试,以确保代码的正确性。在本篇博客中,我们将介绍 JUnit 的基本概念、特点和用法,以及如何编写和运行单元测试。

weixin_52533007的博客 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

为什么使用Junit单元测试?Junit的详解

Junit是一个Java语言的单元测试框架。单元测试是一个对单一实体(类或方法)的测试JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。

砷碲 - Shendi 892

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Junit5+Mockito单元测试详解

本教程主要讲解SpringbootTest中Junit5和Mockito的入门使用。

airouroudewenjie的博客 4972

一文详解Java单元测试Junit

就是针对最小的功能单元(方法),编写测试代码对其进行正确性测试。

wk_cjs的博客 2443

Java程序员必须要知道的单元测试框架Junit详解

作为一名java开发者,相信你或多或少的接触过单元测试,对于测试来讲它是一门能够区分专业开发人员与业余开发人员的重要学科,这篇文章将对java中最常见的一个单元测试框架junit进行一个梳理和讲解。如果你之前没接触过,那么就通过这篇文章进行一个学习。如果你是一个测试老手,我也希望这篇文章能够加深你的印象。 一、为什么需要单元测试 在平时的开发当中,一个项目往往包含了大量的方法,可能有成千上万个。如...

冯冬冬的博客 603
上一篇: HashMap底层源码
下一篇: 如何使用mybatis generator代码生成?
learning__java
博客等级 码龄8年 87粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值