`

单元测试-原理

阅读更多

单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。

通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。

例如,你可能把一个很大的值放入一个有序list 中去,然后确认该值出现在list 的尾部。

执行单元测试,就是为了证明这段代码的行为和我们期望的一致。

 

1、它是一种验证行为。

程序中的每一项功能都是测试来验证它的正确性。它为以后的开发提供支援。就算是开发后期,我们也可以轻松的增加功能或更改程序结构,而不用担心这个过程中会破坏重要的东西。而且它为代码的重构提供了保障。这样,我们就可以更自由的对程序进行改进。

2、它是一种设计行为。

编写单元测试将使我们从调用者观察、思考。特别是先写测试(test-first),迫使我们把程序设计成易于调用和可测试的,即迫使我们解除软件中的耦合。

3、它是一种编写文档的行为。

单元测试是一种无价的文档,它是展示函数或类如何使用的最佳文档。这份文档是可编译、可运行的,并且它保持最新,永远与代码同步。

4、它具有回归性。

自动化的单元测试避免了代码出现回归,编写完成之后,可以随时随地的快速运行测试。

 

下面讨论的四个问题,基本上可以说明单元测试的范畴,单元测试所要做的工作。

1、 它的行为和我期望的一致吗?

这是单元测试最根本的目的,我们就是用单元测试的代码来证明它所做的就是我们所期望的。

2、 它的行为一直和我期望的一致吗?

编写单元测试,如果只测试代码的一条正确路径,让它正确走一遍,并不算是真正的完成。软件开发是一项复杂的工程,在测试某段代码的行为是否和你的期望一致时,你需要确认:在任何情况下,这段代码是否都和你的期望一致;譬如参数很可疑、硬盘没有剩余空间、缓冲区溢出、网络掉线的时候。

3、 我可以依赖单元测试吗?

不能依赖的代码是没有多大用处的。既然单元测试是用来保证代码的正确性,那么单元测试也一定要值得依赖。

4、 单元测试说明我的意图了吗?

单元测试能够帮我们充分了解代码的用法,从效果上而言,单元测试就像是能执行的文档,说明了在你用各种条件调用代码时,你所能期望这段代码完成的功能。

 

JUnit是Java 社区中知名度最高的单元测试工具。

JUnit 设计的非常小巧,但是功能却非常强大。JUnit ——是一个开放源代码的Java测试框架,用于编写和运行可重复的测试。

他是用于单元测试框架体系xUnit的一个实例(用于java语言)。主要用于白盒测试,回归测试。

 

junit是在极限编程和重构(refactor)中被极力推荐使用的工具,因为在实现自动单元测试的情况下可以大大的提高开发的效率。

 

我们只在业务层进行单元测试,因为显示层至今没有什么好的单元测试方法,而我们的业务逻辑又严格封装在业务层,Controler层只做个组装分派的基本动作,没必要花大力气去测试。

 

单元测试一定要使用断言。

 

junit有断言功能,如果测试结果不通过会告诉我们哪个测试不通过,为什么。

而如果是像以前的一般做法,是写一些测试代码看其输出结果,然后再由自己来判断结果是否正确。

 

使用junit断言的好处就是这个结果是否正确的判断是它来完成的,我们只需要看看它告诉我们结果是否正确就可以了,在一般情况下会大大提高效率。

 

分享到:
评论

相关推荐

    Junit单元测试-实验报告.pdf

    本实验报告主要关注的是如何使用JUnit进行单元测试,以及测试的基本原理,包括黑盒测试和白盒测试。 首先,我们要理解实验的目的,即掌握白盒测试方法,设计符合单元测试要求的测试用例,熟练运用JUnit测试工具,并...

    藏经阁-阿里开发者手册-单元测试专题-115.pdf

    本期《阿里开发者手册》专门探究单元测试,旨在帮助开发者深入了解单元测试的原理和实践。 什么是单元测试 单元测试是自动化的代码,它调用被测试的工作单元,之后对这个单元的单个最终结果的某些假设进行校验。...

    测试入门--7单元测试

    下面将深入探讨单元测试的原理、目的、实施步骤以及它在软件开发流程中的作用。 首先,单元测试的目标是隔离和验证代码的各个独立部分,确保它们各自的功能正确无误。这样可以在早期阶段发现错误,降低了修复成本。...

    单元测试理论,介绍单元测试过程

    ### 单元测试理论与实践 #### 一、单元测试的概念与目的 单元测试是对软件基本组成单元进行的测试,其主要目标在于发现各模块内部可能存在的各种错误。这些错误通常包括但不限于设计缺陷、需求理解偏差以及编码...

    java程序员白盒单元测试必备技能 -- Junit4

    Java程序员在进行软件开发时,单元测试是必不可少的一环,以确保代码的正确性和稳定性。Junit4作为Java领域中最常用的单元...同时,了解单元测试的原理和最佳实践,也有助于提升编程能力,成为一名更专业的Java程序员。

    Junit单元测试内部机制解析

    JUnit不仅是一个强大的单元测试工具,它的设计理念和实现机制也为理解软件测试原理提供了一个优秀的案例。通过深入学习JUnit的内部机制,开发者能够更好地利用其功能,提升软件测试的效率和效果。此外,了解JUnit的...

    饿了么-邱化峰-使用AI生成单元测试.pdf

    自动生成单元测试的原理主要依赖于搜索算法和随机测试技术。搜索算法如蚁群算法、粒子群算法和遗传算法,通过不断的搜索,试图达到最大化测试覆盖率的目标。随机测试则是通过随机生成测试用例来发现问题。静态分析...

    单元测试报告模板-单元测试报告模板

    ### 单元测试报告模板解析及关键知识点 #### 一、编写目的 单元测试报告的主要目的是为了记录单元测试的结果,并对其进行整理和汇总,以便形成正式的文档。这不仅有助于后续的软件开发工作,还能为软件单元的评审...

    中科大软院软件系统测试实验报告3--单元测试

    ### 单元测试知识点解析 #### 1. 引言 **1.1 测试标识** - **项目名称**:人民币数字大写转换程序(NumericConvertToRMB.java) - **开发人员**:陈保同 - **测试人员**:陈海鑫 此部分明确了项目的基本信息,...

    软件测试-自动化测试-web自动化-教学研究

    - **单元测试**:Python提供了unittest和pytest等强大框架,可用于编写高效的单元测试。 - **集成测试**:通过Python可以编写复杂的测试场景,确保各个模块之间的交互正常。 - **系统测试**:利用Python的强大...

    M8+LCD1602+LM35的电池容量测试仪----原理图+源程序

    本篇将详细介绍一个基于M8微控制器、LCD1602显示器和LM35温度传感器的电池容量测试仪的设计原理和实现方法。 首先,M8,通常指的是ATmega8,这是Atmel公司生产的一款8位AVR微控制器。它拥有丰富的外设接口,如I²C...

    软件测试(1、掌握单元测试的原理。 2、掌握Ecliplse下Junit的使用方法。)

    【标题】: "软件测试-单元测试与Eclipse下的Junit实践" 【描述】: "本文将探讨单元测试的重要性和Eclipse中Junit的使用,通过实现一个名为MyClass的类,展示如何编写和执行测试用例。" **单元测试(Unit Testing)...

    软件测试实验-JUnit单元测试.pdf

    实验原理:JUnit是一个开源的Java编程语言的单元测试框架,它继承TestCase类,就可以用JUnit进行自动测试了。JUnit本质上是一套框架,继承TestCase类,就可以用JUnit进行自动测试了。JUnit测试是一种白盒测试工具,...

    PM2.5测试仪---硬件原理图及PCB.zip

    本文将深入探讨“PM2.5测试仪---硬件原理图及PCB.zip”压缩包中的硬件设计,主要围绕SLH粉尘检测电路图展开。 首先,我们需要理解PM2.5测试仪的核心组件——粉尘传感器。通常,这类传感器采用光散射原理,通过激光...

    实验六:实验报告 白盒测试 - .doc

    - **工具介绍**:JUnit是一款开源的Java测试框架,用于简化单元测试的编写。 - **主要功能**: - 提供丰富的断言。 - 分离开发代码和测试代码。 - **优点**: - 编写测试用例简单快捷。 - 增强软件稳定性。 - ...

    单元测试instrumentation入门---源码

    在Android开发中,单元测试是确保代码质量的重要环节。Instrumentation测试是Android系统提供的一种针对应用程序进行黑盒和灰盒测试的方式,它允许开发者在实际设备或模拟器上运行测试用例,对应用的各个组件进行...

    单元测试之道C#版——使用NUnit(中文版)

    本书的核心是介绍如何借助开源的NUnit框架进行高效的单元测试,同时,由于单元测试的原理和技术在很大程度上是跨语言的,因此书中讲述的内容对于使用其他编程语言和测试框架的开发者同样具有指导意义。 NUnit是.NET...

Global site tag (gtag.js) - Google Analytics