单元测试的引出 | 学习笔记

简介: 快速学习单元测试的引出

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:单元测试的引出】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/626/detail/9741


单元测试的引出

 

一、单元测试

1、Go 语言的一个很重要的特色是 goroutine 以及管道 channel 以及之前讲过的接口编程。

2、新建一个章节,选择2级,接着直接定位到幻灯片,给它取个名字叫做第15章单元测试。单元测试是关于单元测试的一个框架,单元测试往往是针对一个模块或针对一个函数进行测试的。接着看一下关于单元测试的基本介绍,先看一个需求,引出单元测试,需求如下。

func addUpper(n int) int {

res := θ

for i := 1; i <= n; i++{

res += i

}

return res

这个函数非常简单,传进去一个n值,然后进行一个累积,从1加加到n,以此得到一个结果,所以说这个函数本身是非常简单的。当在实际开发过程中,这个函数可能很复杂,那这个时候有一个需求就是怎样确认它运行的结果正确的。

3、传统的方法来进行测试:

在工作中,会遇到这样的情况,就是去确认一个函数,或者一个模块的结果是否正确,如上代码。用传统方法来解决,最简单最直接的方法就是在 main 函数中,调用 addUpper 函数,看看实际输出的结果是否和预期的结果一致,如果一致,则说明函数正确,否则函数有错误,然后修改错误。接着看一下代码实现,打开customer.Service.go的GOPROJECT,新建一个1文件夹叫 chapter15,然后新建一个文件夹叫 testingdemo01,在这里可以新建一个主文件夹 main,然后在这个地方写上 main.go。接着来简单的写一下代码,代码如下

package main

import (

"fmt"

//1一个被测试函数

func addupper(n int) int {

res := 0

for i := 1; 1 <= n; ina++{

res += i

}

return res

}

func main( ) {

//传统的测试方法,就是在 main 函数中使用看看结果是否正确

res := addupper(1e)// 1.+ 10 = 55

if res 1= 55 {

fmt.Printf("addupper 错误返回值=%v 期望值=%v\n"」 res, 55)

} else {

fmt.Printf("addupper 正确返回值-%v期望傲-%o\n"。 res,55)

}

}

接着试运行一下,然后回到上一级,进入 chapter15,cd 到 testingdemo,然后 go run main.go,接着运行,运行过后发现,结果与想象的相同,就是 addupper 返回值正确,期望值55。如果返回值不正确,比如代码不小心写成了for i := 1; 1 <= n-1; i++{,那这个时候就会发现返回值45,期望值55,这就是传统的测试方法。

4、传统测试方法的缺点分析:

(1)不方便,我们需要在 maini 函数中去调用。这样就需要去修改 main 函数,如果现在项目正在运行,就可能去停止项目。

(2)不利于管理,因为当我们测试多个函数或者多个模块时,都需要写在 main 函数,不利于我们管理和清晰我们思路。

(3)引出单元测试。->testing 测试框架可以很好解决问题。

相关文章
|
Web App开发 JavaScript 前端开发
NB-loT 之通过 Iwm2m 服务器测试 Coap 协议报文 | 学习笔记
快速学习 NB-loT 之通过 Iwm2m 服务器测试 Coap 协议报文
NB-loT 之通过 Iwm2m 服务器测试 Coap 协议报文 | 学习笔记
|
27天前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
129 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
27天前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
19 2
|
27天前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
49 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
6月前
|
Java 测试技术 编译器
JMM测试利器-JCStress学习笔记
JMM测试利器-JCStress学习笔记
java202303java学习笔记第四十六天-请求-postman接口测试
java202303java学习笔记第四十六天-请求-postman接口测试
77 0
|
测试技术
java202304java学习笔记第六十天-ssm-spring配置文件-完善测试环境
java202304java学习笔记第六十天-ssm-spring配置文件-完善测试环境
76 0
|
存储 Kubernetes 监控
PolarDB-X 混沌测试系统搭建赛题解析 | 学习笔记
快速学习 PolarDB-X 混沌测试系统搭建赛题解析
PolarDB-X 混沌测试系统搭建赛题解析 | 学习笔记
|
关系型数据库 OLAP API
测试 API|学习笔记
快速学习测试 API
135 0
测试 API|学习笔记
|
存储 SQL 监控
PolarDB-X 进行 TP 负载测试(三)| 学习笔记
快速学习 PolarDB-X 进行 TP 负载测试。
PolarDB-X 进行 TP 负载测试(三)| 学习笔记