学习单元测试之道-java版学习笔记
一.单元测试
1.定义
单元测试:实开发者编写的一小段程序.
2.目的:
1)用于检验被测代码的一个很小的,很明确的功能是否正确.
2)从效果上而言,它就像能执行的文档,说明了在你用各种条件调用代码时,你所能期望这段代码完成的功能..
3.如何进行单元测试
首先要考虑在编写这些测试方法之前,如何测试那些可疑的方法,可以在编写实现代码时,或之前编写测试代码本省
下一步,新写的测试通过,同时不会影响其他测试,确保系统所有测试都能通过.
总结一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为.
你需要确认:在任何情况下,这段代码是否都和你的期望一致,譬如在参数很可疑,硬盘没有剩余空间,网络掉线的时候
二.Junit
1. Junit的各种断言
//相等性测试
assertEquals([message],expected,actual)
//验证一个对象是否为null
assertNull([message],java.langobject object)
//验证expected参数和actual参数所引用的是否为同一个对象
assertSame([message],expected,actual)
//验证给定的二元条件是否为真.
assertTrue([message],boolean condition)
//会使测试立即失败,这种断言通常用于标记某个不应该到达的分支.
fail([message])
2.Junit框架
1)一个简单例子
每个包含测试的类需要继承TestCase类.而所有一test开头的方法都会被junit自动运行
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();
{….
}
}
2)suite方法
当然,也可以通过创建test suite()静态方法,可以将一系列的测试方法组合起来
比如一些耗时的方法可以选择不运行.
这里不在详细介绍.
3)Setup和tearDown方法
//测试之前用于环境的建立,准备一些资源
Protected void setup()
//释放资源,清理环境
Protected void teardown();
三.测试的礼貌
避免一下情况
1.不完整代码(仅签入一个类文件,而忘记签入它所依赖的其他文件
2.不能编译的代码
3.代码能编译,但是会破坏已存在的代码
4.没有相应单元测试的代码
5.不能通过单元测试的代码
6.通过了单元测试,但是导致系统其他地方的其他测试失败的代码.
四.使用Mock对象测试
因为一些方法真实的运行场景难于确定,所以写”替身方法”实现要测试的方法,Mock真正的环境,Mock对象就是真是对象在调试期的替代品.
借助Mock对象,可以解决一下问题
1..真实对象具有不可确定的行为(产生不可预测的结果,如股票行为)
2.真实对象很难被创建
3.真是对象的某些行为很难触发(如网络错误)
4.真实对象令程序运行速度很慢
5.真是对象有或者是用户界面
6.测试需要询问真是对象它是如何被调用的(如测试可能需要验证某个回调函数是否被调用了)
7.真是对象实际上并不存在(当需要和其他开发小组,或者新硬件系统打交道的时间这是一个普通问题).
分享到:
相关推荐
其中,SET主要负责支持开发人员编写单元测试代码,并提供测试框架;而TE则从用户角度出发,进行自动化测试用例代码编写,评估测试覆盖度并管理测试工作。 接着,书中介绍了软件开发工程师(SWE)在质量保证过程中的...
15. **单元测试和持续集成**:C#支持多种单元测试框架,如 MSTest、NUnit、xUnit等,配合持续集成工具(如Jenkins、TeamCity),可以确保代码质量。 在提供的学习笔记中,"20141031-C#高级编程-学习笔记"可能涵盖了...
### 软件测试学习笔记知识点详解 #### 一、软件测试基础知识 1. **软件测试定义** - **理解**:软件测试是通过执行软件产品来评估其质量的过程。 - **目的**:确保软件产品能够满足用户的需求并达到预定的质量...
测试流程与方法: 使用Markdown的列表和代码块,详细描述软件测试的典型流程,包括需求分析、测试计划、测试设计、测试执行、缺陷管理等,同时介绍不同类型的测试方法,如单元测试、集成测试、系统测试等。...
在本篇“Spring3学习笔记(2)-集成ibatis3进行单元测试”中,我们将深入探讨如何在Spring3框架中整合Ibatis3,并利用它来进行单元测试。这个主题对于理解如何在实际项目中实现数据访问层的测试具有重要意义。在现代...
.NET 快速重构学习笔记是针对开发者提升代码质量和可维护性的重要指南。重构是一个系统性的过程,旨在改善软件设计,优化代码结构,而不改变其外在行为。在.NET开发环境中,重构是不可或缺的技能,它可以帮助开发者...
【Python学习笔记--皮大庆.pdf.zip】是一个针对初学者的Python编程教程,源自英文书籍《How to think like a computer scientist》。这本书以易懂的方式介绍了Python语言的基础知识,旨在帮助没有编程背景的人快速...
模块化编程是软件开发的最佳实践之一,它有助于减少代码重复,使程序更易于理解和测试。 Python提供了多种导入模块的方式。例如,我们可以使用`import`关键字来导入整个模块,如`import math`,然后使用`.`操作符来...
其中,单元测试关注代码模块,集成测试验证不同模块的交互,系统测试检查整体功能,而验收测试则确保产品满足用户或客户的需求。 随着软件行业的不断发展,测试职业发展路径也日益丰富,如功能测试工程师、自动化...
UVM 实战学习笔记 UVM(Universal Verification Methodology)是一种通用的验证方法学,旨在提高验证的效率和质量。下面是根据给定的文件信息生成的相关知识点: 1. UVM 工厂机制(Factory Mechanism):UVM 中的...
8. **部署与测试**:最后,书中会讲解如何将开发的应用部署到生产环境,如使用Gunicorn和Nginx,以及如何编写和运行单元测试和集成测试,确保代码质量。 通过这份学习笔记,读者不仅可以了解Flask框架的基本用法,...
### 软件测试训练营学习笔记:软件测试员面试问题详解 #### 一、SDLC与STLC的区别 **软件开发生命周期 (SDLC)** 是指为了设计、开发及测试高质量软件所遵循的一系列过程。其核心目标在于确保产出的软件能够满足或...
### Spring Boot 学习笔记知识点总结 #### 一、Spring发展史 - **Spring1.x时代**:在Spring1.x的时代,主要通过XML文件来配置Bean。随着项目的规模扩大,XML配置文件的数量也随之增加,这导致开发人员需要频繁地...
当熟练掌握基本模块后,可以探索更复杂的内建模块,如`threading`模块进行多线程编程,`queue`模块实现先进先出(FIFO)的数据结构,或`unittest`模块进行单元测试。 总之,Python的内建模块极大地丰富了其功能,...
《Go学习笔记-第四版》是由知名编程作者雨痕编写的关于Go语言的教程,旨在帮助读者深入理解和掌握Go语言的各个方面。Go语言,又称Golang,是Google于2009年推出的一种静态类型的、编译型的、并发型且具有垃圾回收...
8. **测试与调试**: 使用单元测试、集成测试和UI测试来确保应用的质量。JUnit和Espresso等工具可以帮助开发者编写和执行测试用例,找出并修复潜在问题。 综上所述,“Android--极简笔记App”利用了Material Design...
7. **调试与测试**:掌握GWT的开发模式(Development Mode)和编译模式(Prod Mode),以及如何利用GWT的单元测试框架进行测试。 8. **国际化与本地化**:Gwt-ext支持多语言应用,理解如何实现应用的语言切换和资源...
尚硅谷康师傅java学习笔记。 、2020-4-5 java学习笔记 2020-4-6 java笔记 ---内部类 2020-4-6 java笔记 ---异常 2020-4-6 java笔记 --多线程 2020-4-8 java笔记 String类 2020-4-9 java 比较器 ...2020-4-27 单元测试