单元测试之道-学习笔记

学习单元测试之道-java版学习笔记

[color=red]一.单元测试[/color]
[b]1.定义[/b]
单元测试:实开发者编写的一小段程序.

[b]2.目的:[/b]
1)用于检验被测代码的一个很小的,很明确的功能是否正确.
2)从效果上而言,它就像能执行的文档,说明了在你用各种条件调用代码时,你所能期望这段代码完成的功能..

[b]3.如何进行单元测试[/b]
首先要考虑在编写这些测试方法之前,如何测试那些可疑的方法,可以在编写实现代码时,或之前编写测试代码本省
下一步,新写的测试通过,同时不会影响其他测试,确保系统所有测试都能通过.

总结一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为.
你需要确认:在任何情况下,这段代码是否都和你的期望一致,譬如在参数很可疑,硬盘没有剩余空间,网络掉线的时候

[color=red]二.Junit[/color]
[b] 1. Junit的各种断言[/b]
[code]
//相等性测试
assertEquals([message],expected,actual)

//验证一个对象是否为null
assertNull([message],java.langobject object)

//验证expected参数和actual参数所引用的是否为同一个对象
assertSame([message],expected,actual)


//验证给定的二元条件是否为真.
assertTrue([message],boolean condition)

//会使测试立即失败,这种断言通常用于标记某个不应该到达的分支.
fail([message])

[/code]
[b]2.Junit框架[/b]
[b]1)一个简单例子[/b]
每个包含测试的类需要继承TestCase类.而所有一test开头的方法都会被junit自动运行[code]
import junit.framework.TestCase
public class BaseTest extends TestCase
{
protected Log logger = LogFactory.getLog(getClass());

@SuppressWarnings("unchecked")
protected void echoList(List list)
{
System.out
.println("\n===============================================================");
System.out.println("list size = " + list.size() + "\n");
for (Object obj : list)
{
System.out.println("obj = " + obj);
}
System.out
.println("==================================================================\n");
}
protected void echo(Object obj)
{
System.out.println(obj);
}
Protected void setup()
{…
}
Protected void teardown();
{….
}
}[/code]
[b]2)suite方法[/b]
当然,也可以通过创建test suite()静态方法,可以将一系列的测试方法组合起来
比如一些耗时的方法可以选择不运行.
这里不在详细介绍.

[b]3)Setup和tearDown方法[/b]
[code]
//测试之前用于环境的建立,准备一些资源
Protected void setup()
//释放资源,清理环境
Protected void teardown();[/code]

[color=red]三.测试的礼貌[/color]
避免一下情况
1.不完整代码(仅签入一个类文件,而忘记签入它所依赖的其他文件
2.不能编译的代码
3.代码能编译,但是会破坏已存在的代码
4.没有相应单元测试的代码
5.不能通过单元测试的代码
6.通过了单元测试,但是导致系统其他地方的其他测试失败的代码.
[color=red]
四.使用Mock对象测试[/color]
因为一些方法真实的运行场景难于确定,所以写”替身方法”实现要测试的方法,Mock真正的环境,Mock对象就是真是对象在调试期的替代品.
借助Mock对象,可以解决一下问题
1..真实对象具有不可确定的行为(产生不可预测的结果,如股票行为)
2.真实对象很难被创建
3.真是对象的某些行为很难触发(如网络错误)
4.真实对象令程序运行速度很慢
5.真是对象有或者是用户界面
6.测试需要询问真是对象它是如何被调用的(如测试可能需要验证某个回调函数是否被调用了)
7.真是对象实际上并不存在(当需要和其他开发小组,或者新硬件系统打交道的时间这是一个普通问题).
Python单元测试之道:从入门到精通的全面指南合集 单元测试(Unit Testing)是一种软件测试方法,它的目标是验证代码中各个独立的单元(通常是函数、方法或类)的行为是否符合我们的预期。单元测试有许多优点,如快速、反馈即时、易于定位问题等,是测试驱动开发(TDD)的重要组成部分。这样,无论我们的代码在何时被修改,都可以通过运行这个单元测试来快速检查是否存在问题。Python的unittest模块是Python标准库中用于进行单元测试的模块,它提供了一套丰富的API供我们编写和运行单元测试。 阅读详情

相关推荐

单元测试之道(C#版-中文完整版)

完整的中文版《单元测试之道C#版》。单元测试不但会使你的工作完成得更轻松,而且会令你的设计变得更好,甚至大大减少你花在调试上面的时间。 在我们上面的小故事里面,Pat 因为假设底层的代码是正确无误的而卷入麻烦之中,先是高层代码中使用了底层代码;然后这些高层代码又被更高层的代码所使用,如此往复。在对这些代码的行为没有任何信心的前提下,Pat 等于是在假设上面用竖立卡片堆砌了一间房子——只要将下面卡片轻轻移动,整间房子就会轰然倒塌。 当基本的底层代码不再可靠时,那么必需的改动就无法只局限在底层。虽然你可以修正底层的问题,但是这些对底层代码的修改必然会影响到高层代码,于是高层代码也连带地需要修改;以此递推,就很可能会动到更高层的代码。于是,一个对底层代码的修正,可能会导致对几乎所有代码的一连串改动,从而使修改越来越多,也越来越复杂。于是,整间由卡片堆成的房子就由此倒塌,从而使整个项目也以失败告终。 Pat 总是说:“这怎么可能呢?”或者“我实在想不明白为什么会这样”。如果你发现自己有时候也会有这种想法,那么这通常是你对自己的代码还缺乏足够信心的表现——你并不能确认哪些是工作正常的而哪些不是。 为了获得Dale 所具有的那种对代码的信心,你需要“询问”代码究竟做了什么,并检查所产生的结果是否确实和你所期望的一致。 这个简单的想法描述了单元测试的核心内涵:这个简单有效的技术就是为了令代码变得更加完美。

单元测试系列一:单元测试之道

单元测试与覆盖率

青鱼入云的博客 736

《单元测试之道Java版:使用JUnit》PDF 下载

《单元测试之道Java版:使用JUnit》PDF 下载

单元测试之道

C 交叉检查 使用另一种算法求出结果 对比是否相等,相当于算法中使用暴力解法的答案和优化后的结果的答案做对比来确认优化结果是正确的。* Conformance 一致性 是否是期望的入参,比如处理邮箱,那么期望的是入参将是一个正确格式的邮箱,如果不是,该如何处理。* Range 区间性, 索引下标, 角度不能超过360,可以将原生类型放到类里面,通过类初始化原生变量的值前加限制。* I 反向测试 ,比如求数的平方根,那么将结果相乘后再和原来的数对比,或者插入之后搜索是否和插入的结果一致。

kyhoon 760

单元测试之道C#版——使用Nunit pdf格式

单元测试之道C#版——使用Nunit, pdf格式单元测试之道C#版——使用Nunit, pdf格式单元测试之道C#版——使用Nunit, pdf格式

单元测试之道Java版.pdf(高清)

单元测试之道Java版

Junit 学习笔记

上周空闲,看完了《单元测试之道》,这里对自己的学习做个小结,以便以后查阅:     一般原则: 测试任何可能失败的地方。 测试任何已经失败的地方。 对于新加的代码,在被证明正确之前,都可能是有问题的。 至少编写和产品代码一样多的测试代码。 针对每次编译都做局部测试。 签入代码之前做全局测试。 需要回答的问题: 我如何知道代码运行是否正确呢? 我要如何对它进行测试? ...

枫中畅游 187

Tesseract OCR 字库训练教程:提高识别率进阶版

通过 Tesseract 字库训练,你可以提高 OCR 对特定文本或字体的识别能力。训练过程包括准备训练数据、生成标签文件、运行训练工具,以及将训练结果集成到实际项目中。虽然训练过程需要一些时间和精力,但对于需要高精度文本识别的场景来说,字库训练是非常有效的提升识别率的方法。

小蜗牛的珍贵百宝箱 1865

《C++代码简洁之道》学习笔记:良好的单元测试原则

《C++代码简洁之道》学习笔记:良好的单元测试原则

友善啊,朋友的博客 1526

YOLO模型使用jupyterlab的方式进行预测/推理(示例)

首先相信很多使用过python的人都或多或少地了解过这个应用。是一个开源Web应用程序,可让用户创建和共享包含实时代码、公式、可视化和叙述文本的文档。用途包括:数据清理和转换、数值模拟、统计建模、等等。而Jupyter Lab则是Jupyter的下一代笔记本界面。是一个基于Web的交互式开发环境,用于Jupyter notebook、代码和数据。非常灵活,可支持数据科学、科学计算和机器学习领域的广泛工作。是可扩展和模块化的,其可编写插件来添加新组件并与现有组件相集成。

ocean00008899的博客 900

无线Mesh组网全攻略:从原理、部署到调优与排障

对于布线困难的大户型、复式楼或园区,传统的无线中继往往面临带宽减半和链路不稳定的问题。无线Mesh网络通过多跳转发与自组织路由,让每个节点无需网线即可协作扩展覆盖,并依靠动态路径选择实现自愈。其核心技术涉及802.11s、HWMP路由协议,以及802.11k/v/r协同的无缝漫游,能有效提升终端切换体验。在实际部署中,设备选型、回程频段规划与布点位置直接决定网络质量。围绕无线Mesh的组网原理、设备选型、配置调优与故障排查,提供一套工程实践参考,帮助用户在复杂环境下构建稳定高效的无缝覆盖。

weixin_34098209的博客 270

《代码整洁之道》第9章:单元测试——学习笔记

文章目录TDD三定律保持测试整洁测试带来一切好处整洁的测试每个测试一个断言F.I.R.S.T.总结 有了一套运行通过的测试,我会确保任何需要用到代码的人都能方便地使用这些测试。 确保测试和代码一起签入同一个代码包。 敏捷和TDD运动鼓舞了许多程序员编写自动化单元测试。 TDD三定律 定律一: 在编写不能通过的单元测试前,不可编写生产代码。 定律二: 只可编写刚好无法通过的单元测试,不能编译也算不过。 定律三: 只可编写刚好足以通过当前失败测试的生产代码。 这三条定律将你限制在大概30秒一个的循环中。测

超级大洋葱的博客 1120

手把手教你为ArduPilot添加自定义飞行模式:以自动巡检航线为例

本文详细介绍了如何为开源飞控ArduPilot添加自定义飞行模式,并以自动巡检航线为例,提供了从状态机设计、代码实现到地面站集成的完整开发指南。通过七步法手把手教学,帮助开发者深入理解飞控核心逻辑,实现无人机自主执行复杂巡检任务,满足行业应用定制需求。

weixin_29306875的博客 133

【C++代码整洁之道】第二章 构建安全体系

测试金字塔,单元测试的优点,测试框架/测试套/测试用例,单元测试的基本原则

shuaixio的博客 1010

【uni-app】PDA扫码枪获取扫码数据APP(通俗易懂),聚焦频繁弹软键盘输入法等各种坑完美解决方法,附完整代码

uniapp PDA扫码枪获取扫码数据APP(通俗易懂),频繁弹软键盘等各种坑完美解决方法

coderYYY的博客 7418

SAP FAGLFLEXT 是 SAP 新总账的核心余额表,存储多维度的汇总余额数据。核心结论:该表按 “科目 + 会计年度 + 期间 + 维度” 存储累计余额,字段可分为基础标识

FAGLFLEXT是SAP新总账的核心余额表,采用"科目+年度+期间+维度"结构存储多维汇总数据。其字段分为基础标识(科目、年度等)、维度细分(公司代码、利润中心等15个维度)、金额数值(本外币余额)、辅助控制(状态标识)四大类,支持新总账的灵活核算。该表通过凭证自动更新,与旧总账GLT0相比显著扩展了维度核算能力,各维度需在科目主数据或Ledger配置中启用才能使用。

金牌架构师 454

【C++代码整洁之道】第八章 测试驱动开发

测试驱动开发,普通旧单元测试的缺点,什么是测试驱动开发,测试驱动开发的步骤,测试驱动开发实例,测试驱动开发的优势,TDD不能解决的问题

shuaixio的博客 698

基于MATLAB的Hough变换指针式仪表识别

综上所述,本文介绍了如何使用MATLAB中的Hough变换算法来实现指针式仪表的自动识别和读数。通过图像预处理、Hough变换和直线提取,我们可以准确地检测指针的位置,并进一步进行仪表读数。本文将介绍如何使用MATLAB中的Hough变换算法来实现指针式仪表的自动识别和读数。在指针式仪表识别中,我们可以利用Hough变换来检测仪表盘上的指针。以上是基于MATLAB的Hough变换指针式仪表识别的详细步骤和源代码示例。根据指针在仪表盘上的位置,我们可以进行角度计算或使用其他技术来获取准确的读数。

techDM的博客 461

代码整洁之道阅读笔记_第3次

第13~17章 13、并发编程:单一权责原则、尽可能减小同步区域、限制数据作用域、有些java类不是线程安全,测试线程代码。由于对并发编程应用不多,只是简单的理解为以上几点。 14、逐步改进:渐进不改进之名大动其结构保持可运行、测试驱动开发 15、JUnit内幕:以实例描述JUnit代码整洁之道  16、重构SeriaDate:作者实例重构jfree.org一个开源的类SeriaDate ...

一如即往 262

Rockchip eMMC寿命监控:SMART信息读取与预防性维护

擦写计数坏块数量温度使用时间。

小灰灰的博客 759

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

单元测试之道 -使用JUnit

在图书馆新借了本书,就是上面写的那本,写的很不错,推荐给大家!程序员修炼三部曲 第二部 单元测试之道 -使用JUnitThe Pragmatic Starter Kit-Volume II  Pragmatic Unit Testing   In Java with JUnit[美]Andrew Hunt    David Thomas 著陈伟柱 陶文 译电子工业出版社    书的前面介绍了单元测

网络猎狐犬 1527

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

java单元测试之junit之实战

1 编写该文章的起因 博主是一枚小新,经常挖坑填坑。最近在工作中遇到了这样一种情况。某天小伙伴说博主写得一个方法有问题,并且相应的测试类也跑不通。博主一直秉着磨刀不误砍柴工的思想,测试类都是写得好好地并且能杠杠运行的!怀着好奇,经过一番debug,发现某句代码抛出了空指针,如下 String url = linkedService.getUrlById(id); getUrlById是通...

mcrwayfun,欢迎你 4万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

java单元测试之道_读单元测试之道java版

最近读了单元测试之道这本书,感觉这本书是比较适合愿意堆砌代码的程序员的,说适合倒不如说有利于喜欢堆砌代码的程序员的,为什么这么说呢,因为他可以帮助其不至于代码写了非常厉害但是由于小小的错误不能运行,谈谈我在看书的过程中学到的知识。什么是单元测试,单元测试是开发者编写的一小段代码,用于检测被测代码的一个很小的很明确的功能是否能正确运行。意思就是在你写了很多的时候你想知道他对不对你就可以用这一小段代码...

weixin_35434041的博客 259
上一篇: 接触过的东东
下一篇: (转)Java开发技术十年回顾与展望
litc603
博客等级 码龄18年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值