iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Go语言单元测试和基准测试实例代码分析
  • 697
分享到

Go语言单元测试和基准测试实例代码分析

2023-07-05 02:07:56 697人浏览 泡泡鱼
摘要

本篇内容主要讲解“Go语言单元测试和基准测试实例代码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go语言单元测试和基准测试实例代码分析”吧!背景测试的出现是为了避免项目中出现重大事故测试是

本篇内容主要讲解“Go语言单元测试和基准测试实例代码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go语言单元测试和基准测试实例代码分析”吧!

    背景

    测试的出现是为了避免项目中出现重大事故

    测试是避免事故的最后一道屏障

    测试

    单元测试的覆盖率在一定程度上而言,决定了代码的质量

    单元测试

    Go语言单元测试和基准测试实例代码分析

    通过测试单元的输出与期望值进行校对从而验证代码的正确性,从而保证新旧代码的互不影响与程序的正常运行。

    进而单元测试较于编译更易于在较短的周期内发现和定位代码中的错误使损失最小化从而提升效率。所以写单元测试是很有必要的。

    golang单元测试对文件名和方法名,参数都有很严格的要求

    • 文件名必须以xx_test.go命名

    • 方法必须是Test[^a-z]开头

    • 方法参数必须t *testing.T

    • 初始化逻辑放到TestMain中

    • 使用go test执行单元测试

    演示

    通过第三方包assert演示单元测试

    判断函数测试值与期望值是否一致

    import(    "GitHub.com/stretchr/testify/assert"    "testing")func TestHelloTom(t *testing.T) {    output := HelloTom()    expectOutput := "Tom"    assert.Equal(t, expectOutput, output)}func HelloTom() string {    return "Tom"}

    覆盖率

    覆盖率出现的目的:

    • 衡量代码是否经过了足够的测试

    • 评价项目的测试水准

    • 评估项目是否达到了高水准测试等级

    通过go test命令测试函数的覆盖率

    // judgment.gofunc JudgePassLine(score int16) bool {    if score >= 60 {        return true    }    else {        return false    }}// judgment_test.gofunc TestJudgePassLineTrue(t *testing.T) {    isPass := JudgeePassLine(70)    assert.Equal(t, true, isPass)}func TestJudgePassLineFalse(t *testing.T) {    isPass := JudgeePassLine(50)    assert.Equal(t, false, isPass)}

    一般覆盖率:50%~60%,较高覆盖率:80%+

    测试分支相互独立、全面覆盖

    对于上述案例代码而言

    应出现成绩大于等于60 和小于60的测试用力

    测试单元粒度足够小,函数单一职责

    依赖

    Go语言单元测试和基准测试实例代码分析

    • 幂等:重复运行同一个case,结果与之前一致

    • 稳定:指单元测试相互隔离,可以独立运行

    文件处理

    当测试文件被修改后,可能会导致测试失败或错误率增高

    从而出现了Mock函数

    func ReadFirstLine() string {    open, err := os.Open("log") // 打开一个文件    defer open.Close()    if err != nil {        return ""    }    scanner := bufio.NewScanner(open) // 对每行进行遍历    for scanner.Scan() {        return scanner.Text()    }    return ""}func ProcessFirstLine() string {    line := ReadFirstLine()    destLine := strings.ReplaceAll(line, "11", "00") // 替换11为00    return destLine}func TestProcessFirstLine(t *testing.T) { // 执行单元测试    firstLine := ProcessFirstLine()    assert.Equal(t, "line00", firstLine)}

    Mock

    monkey: github.com/bouk/monkey 这是一个开源的mock测试库,可以对method或者实例的方法进行mock

    Monkey Patch的作用域在Runtime, 运行时通过Go的unsafe包能够将内存中函数的地址替换为运行时函数的地址,将待打桩函数或方法的实现跳转。

    Mock函数不仅可以为一个函数打桩 也可以为一个方法打桩

    // 用函数A去替换函数B,B就是原函数,A就是打桩函数func Patch(target, replacement interface{}) *PatchGuard {    // target就是原函数,replacement就是打桩函数    t := reflect.ValueOf(target)    r := reflect.ValueOf(replacement)    patchValue(t, r)    return &PatchGuard{t, r}}func Unpatch(target interface{}) bool {    // 保证了在测试结束之后需要把这个包卸载掉    return unpatchValue(reflect.ValueOf(target))}func TestProcessFirstLineWithMock(t *testing.T) {    monkey.Patch(ReadFirstLine, func() string {        return "line110"    })    defer monkey.Unpatch(ReadFirstLine)    line := ProcessFirstLine()    assert.Equal(t, "line000", line)}// 通过patch对ReadFirstLine进行打桩mock,默认返回line110,通过defer卸载mock// 这样整个测试函数就摆脱了本地文件的束缚和依赖

    基准测试

    基准测试是指测试一段程序的性能及耗费CPU的程度;

    在实际的项目开发中,经常会遇到代码性能瓶颈,为了定位问题,经常要对代码做性能分;

    这时就用到了基准测试,其使用方法与单元测试类似。

    • 优化代码,需要对当前代码分析

    • 内置的测试框架提供了基准测试的能力

    到此,相信大家对“Go语言单元测试和基准测试实例代码分析”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    --结束END--

    本文标题: Go语言单元测试和基准测试实例代码分析

    本文链接: https://www.lsjlt.com/news/349083.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Go语言单元测试和基准测试实例代码分析
      本篇内容主要讲解“Go语言单元测试和基准测试实例代码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go语言单元测试和基准测试实例代码分析”吧!背景测试的出现是为了避免项目中出现重大事故测试是...
      99+
      2023-07-05
    • Go语言工程实践单元测试基准测试示例详解
      目录背景测试单元测试演示覆盖率依赖文件处理Mock基准测试小结背景 测试的出现是为了避免项目中出现重大事故 测试是避免事故的最后一道屏障 测试 单元测试的覆盖率在一定程度上而言,...
      99+
      2023-02-05
      Go语言单元测试基准测试 Go语言测试
    • Go语言单元测试与性能测试示例分析
      这篇文章主要讲解了“Go语言单元测试与性能测试示例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言单元测试与性能测试示例分析”吧!概述测试不是Go语言独有的,其实在很多语言都有测试...
      99+
      2023-06-25
    • Golang 单元测试和基准测试实例详解
      目录前言Go 单元测试单元测试覆盖率基准测试前言 多人协作的项目里,要保证代码的质量,自然离不开单元测试。开发完一个功能后肯定要对所写的代码进行测试,测试没有问题之后再合并到代码库供...
      99+
      2024-04-02
    • Go语言单元测试的示例分析
      小编给大家分享一下Go语言单元测试的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、单元测试分类及其概念1.基本分类测试函数 函数前缀为Test 主要用...
      99+
      2023-06-29
    • Go 语言单元测试
      php小编鱼仔今天为大家介绍一下Go语言的单元测试。在软件开发中,单元测试是非常重要的一环。通过编写测试用例,我们可以验证代码的正确性,提高代码质量和可维护性。Go语言提供了丰富的测试...
      99+
      2024-02-09
      go语言
    • Go语言基础单元测试与性能测试示例详解
      目录概述单元测试代码说明如下问题注意性能测试基本使用自定义测试时间概述 测试不是Go语言独有的,其实在很多语言都有测试,例如:Go、Java、Python… 要想成为一名合格的大牛,...
      99+
      2024-04-02
    • Go语言单元测试超详细解析
      目录一、单元测试分类及其概念1.基本分类2.细说单元测试分类二、结合代码细说每一种测试1.基准测试2.组测试与子测试三、pprof调试工具1.对主函数进行传参2.pprof性能调优前...
      99+
      2024-04-02
    • c语言单元测试代码怎么写
      在C语言中,可以使用一些单元测试框架来编写和运行单元测试代码。以下是一个使用CUnit框架编写的基本示例: #include #i...
      99+
      2023-10-26
      c语言
    • Sysbench基准测试的示例分析
      这篇文章给大家分享的是有关Sysbench基准测试的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 Sysbench和TPCC-MySQL一样...
      99+
      2024-04-02
    • Go 语言进阶单元测试示例详解
      目录前言测试单元测试规则示例assert覆盖率依赖Mock基准测试前言 本文从单元测试实践角度出发,提升对代码质量的意识。 本文内容主要包括:单元测试、Mock测试、基准测试。 测...
      99+
      2023-01-28
      Go 语言单元测试 Go 单元测试
    • 基于SpringBoot Mock单元测试的示例分析
      小编给大家分享一下基于SpringBoot Mock单元测试的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Junit中的基本注解:@Test:使用该注解标注的public void方法会表示为一个测试方...
      99+
      2023-06-25
    • vue单元测试的示例分析
      小编给大家分享一下vue单元测试的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!为什么要引进单元测试?现今时代,各种编程语言,开发框架,集成工具蓬勃发展,然而软件工程师们却仍然挣扎在第一线,被bug、遗留代码、技术...
      99+
      2023-06-14
    • Go语言中的基准测试和性能比较
      在 go 语言中,通过使用 testing 包中的 benchmarkxxx 函数,可以轻松编写基准测试来衡量代码性能。这些函数遵循标准语法,并接收 *testing.b 类型的指针作为...
      99+
      2024-05-08
      基准测试 性能比较 go语言
    • Go语言中的性能测试与单元测试的区别
      性能测试评估应用程序在不同负载下的性能,而单元测试验证单个代码单元的正确性。性能测试侧重于测量响应时间和吞吐量,而单元测试关注函数输出和代码覆盖率。性能测试通过高负载和并发模拟实际环境,...
      99+
      2024-05-08
      单元测试 性能测试 go语言
    • springboot单元测试依赖踩坑实例源码分析
      本文小编为大家详细介绍“springboot单元测试依赖踩坑实例源码分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“springboot单元测试依赖踩坑实例源码分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
      99+
      2023-07-05
    • Go语言中Get/Post请求测试实例分析
      本篇内容主要讲解“Go语言中Get/Post请求测试实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go语言中Get/Post请求测试实例分析”吧!gin安装先将gin安装一下,安装依赖g...
      99+
      2023-06-30
    • Go语言单元测试基础从入门到放弃
      目录Go语言测试go test工具单元测试函数格式单元测试示例go test -vgo test -run回归测试跳过某些测试用例子测试表格驱动测试介绍示例并行测试使用工具生成测试代...
      99+
      2024-04-02
    • Angular中单元测试的示例分析
      这篇文章给大家分享的是有关Angular中单元测试的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。第一个测试用例当创建Angular应用后,在package.json文件...
      99+
      2024-04-02
    • PHP 单元测试代码规范与质量准则
      php 单元测试的代码规范和质量准则包括:命名约定:测试类名以 test 后缀,方法名以 test 开头;方法签名:使用 public function testmethodname()...
      99+
      2024-05-07
      php 单元测试 代码可读性
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作