学习单元测试之道-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.真是对象实际上并不存在(当需要和其他开发小组,或者新硬件系统打交道的时间这是一个普通问题).
分享到:
相关推荐
测试流程与方法: 使用Markdown的列表和代码块,详细描述软件测试的典型流程,包括需求分析、测试计划、测试设计、测试执行、缺陷管理等,同时介绍不同类型的测试方法,如单元测试、集成测试、系统测试等。...
重构是持续改进代码的基础。抵制重构将带来技术麻烦:忘记代码片段的功能、创建无法测试的代码等等。...而有了重构,使用单元测试、共享代码以及更可靠的无 bug 的代码这些最佳实践就显得简单多了。
在使用vue-cli创建项目的时候,会提示要不要安装单元测试和e2e测试。既然官方推荐我们使用这两个测试框架,那么我们就动手去学习实践一下他们吧。 简介 Karma Karma是一个基于Node.js的JavaScript测试执行过程管理...
尚硅谷康师傅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 单元测试
单元测试学习笔记软件测试什么是单元测试单元在程序里可以简单的理解为一个模块,一个方法。单元测试也就是在完成每个模块后都进行的测试。从确保每个模块没有问题,从而提高整体的程序质量。做单元测试的好处对于...
NULL 博文链接:https://copperfield.iteye.com/blog/1170901
我们就将学习两种单元测试的框架.第一种,就是鼎鼎大名的xUnit测试框架家族.xUnit测试框架有助于我们更加结构化地书写测试代码, 更方便地运行单元测试并检查运行结果.第二种框架称为隔离框架(isolationframewor
我们已经了解了程序员需要单元测试,下面我们来给单元测试作一个完整的定义:这个定义有点长,但是它却包含了大量重要信息:有了单元测试的定义,我们来看看有关单元测试的几个基本概念,这些基本概念会在后面的章节中反复...
以下是一个Python学习笔记的大纲,涵盖了从基础到进阶的内容。你可以根据自己的学习进度和理解情况,逐步填充...单元测试(unittest模块) 文件和目录操作 os模块 shutil模块 pathlib模块 高级特性 列表推导式(List C
主要介绍了Android学习笔记之应用单元测试,结合实例形式较为详细的分析了Android单元测试的实现原理与具体步骤,具有一定参考借鉴价值,需要的朋友可以参考下
本文来自博客园,本文主要介绍什么是单元测试,单元测试的工具以及单元测试的标准,希望对您的学习有所帮助。(1)协助程序员尽快找到代码中bug的具体位置(2)能够让程序员对自己的程序更有自信(3)能够让程序员在...
黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别 黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。 白盒测试:已知产品的内部工作过程,可以通过测试证明每种...
在软件测试中,有两种不同的测试思路,它们分别是功能性测试和结构性测试.功能性测试,也称为黑盒测试,其基本理念是:任何程序都可以被看作是将输入定义域取值映射到输出值域的函数. 采用功能性测试来开发测试用例,唯一...
* 集成 Junit 单元测试 * 读取系统环境变量 * 使用自定义 properties * 改变默认包扫᧿ * 自定义启动 Banner * 导入 spring XML 配置文件 * 热部署 * 监控和管理生产环境 * starter 详解 * 依赖的版本 * 文件上传 * ...
有的开发人员认为,测试代码不是交付给最终用户的产品代码,只是内部测试使用的,因此其质量比产品代码低一点也无可厚非.我们认为这是一个错误的观点.首先,虽然测试代码不会被交付给最终用户,但它同样是交付代码,它将被...
JUnit是一款由Erich Gamma(《设计模式》的作者)和Kent Beck(极限编程的提出者)编写的开源的回归测试框架,供Java编码人员做单元测试之用。当前版本4.1,可以从www.junit.org网站上获得。与早期的JUnit 3相比,...