首页 > 编程语言 >GO 学习笔记之五 编程(三)单元测试 ( VSCODE工具运行 )

GO 学习笔记之五 编程(三)单元测试 ( VSCODE工具运行 )

时间:2024-12-26 10:31:41浏览次数:7  
标签:dbconfig err VSCODE 单元测试 test Test 之五 go

一、目的

      当本地写好了一个go文件之后,希望通过单元测试来验证写的go文件中代码逻辑是否正确,减少后期发现问题成本。本案例介绍如何在VSCODE 工具中触发执行和单点debug执行单元测试函数(注意:VSCODE工具有一个致命不好的点就是慢)

二、编写单元测试

   假设:当前业务逻辑go文件为 sqldm.go,且其中有一个 NewDmDataSource 函数,现在需要对该函数进行单元测试。

   其中 sqldm.go 代码如下

package sqldb

import (
    "database/sql"
    "fmt"

    _ "dm"

    "test.com/pkg/middleware/database/dbconfig"
    "test.com/pkg/tools/logger"
)

type DmDataSource struct {
    dataSource *SqlDataSource
}

func (dmDataSource *DmDataSource) GenerateDBsn() string {
    return dmDataSource.generateDBsn(dmDataSource.dataSource.dbconfig)
}

func (dmDataSource *DmDataSource) generateDBsn(dbconfig *dbconfig.DbConfig) string {
    return fmt.Sprintf("dm://%s:%s@%s:%d", dbconfig.GetUsername(), dbconfig.GetPwd(), dbconfig.GetHost(), dbconfig.GetPort())
} 

func NewDmDataSource(dbconfigP *dbconfig.DbConfig) (*DmDataSource, error) {
    dmDataSource := &DmDataSource{}
    db, err := sql.Open(dbconfig.DmAliasDbDriver.DriverAlias, dmDataSource.generateDBsn(dbconfigP))
    if err != nil {
        logger.Error("cannot generate datasource for postgres.[host:%s,port:%d,username:%s,dbname:%s,pwd:%s]", dbconfigP.GetHost(), dbconfigP.GetPort(), dbconfigP.GetUsername(), dbconfigP.GetDbname(), dbconfigP.GetPwd(), err)
        return nil, err
    }
    dmDataSource.dataSource = &SqlDataSource{dbconfigP, db}
    return dmDataSource, nil
}

     具体需要做如下工作:

1、编写单元测试文件

     1)  在sqldm.go 同级目录下创建 sqldm_test.go文件(单元测试文件必须以_test.go 结尾)

     2)在 sqldm_test.go 引入 testing 包

     3)   所有测试函数必须以 Test 开头,创建 TestDmConn 函数,参数为 *testing.T 类型

       sqldm_test.go 文件内容如下:

package sqldb

import (
    "testing"

    "test.com/pkg/middleware/database/dbconfig"
)

func TestDmConn(t *testing.T) {
    _dbconfig, _err := dbconfig.NewDBConfig("10.19.219.160", "SYSDBA", "SYSDBA", "SYSDBA", 5236, dbconfig.Dameng)
    if _err != nil {
        t.Fatal("config for dameng is wrong", _err)
    }
    _dbconfig.SetPoolMaxIdleConns(0)
    _dbconfig.SetPoolMaxOpenConns(1)
    _pg_data_source, err := NewDmDataSource(_dbconfig)
    if err != nil {
        t.Fatal("cannot create datasource for dameng", err)
    }
    defer _pg_data_source.dataSource.getDb().Close()
    _err = _pg_data_source.dataSource.db.Ping()
    if _err != nil {
        t.Fatal("cannot connect dameng", _err)
    }
    t.Logf("get connction for dameng success,%v", _dbconfig)
}

三、执行单元测试

1、单独运行单元测试函数

     在VSCODE 中,可以通过以下方式进行单独运行该函数方法:

1.1  直接通过 Test 函数前头的 绿色箭头运行图标 执行运行

  直接打开 单元测试文件,每个可执行的 Test 开头的单元测试函数前面会自动出现 绿色图标,见上图,点击 可执行该单元测试函数

1.2 直接通过 Test 函数上头的 run test 执行运行

1.3 选择 Test 开头的测试函数,右键选择"Test Function At Cursor"

效果图上图,如下:

2、执行单元测试文件(_test.go 结尾的文件)中的所有测试函数

2.1 右键文件,选择"运行函数"

3、执行某个包中的所有单元测试文件中的所有 Test开头的测试函数

 3.1 右键 包所属的目录,选择"运行测试"

四、单点调试单元测试函数

1、配置 debug 可执行文件

需要先配置  launch.json文件,左侧菜单点击 debug 图标,然后点击顶部的 设置图标,选择添加配置,自动生成右侧的 launch.json文件内容,此时需要将 program 值调整成 main函数所在go文件

2、使用 单元测试函数上方的 debug test

当程序执行到断点处,会停止下来,可以点击顶部的调试debug图标,进行相应的操作。

3、选中 Test 函数 右键选择 "Debug Test At Cursor"

 

 

 

 

 

TestDmConn

标签:dbconfig,err,VSCODE,单元测试,test,Test,之五,go
From: https://www.cnblogs.com/sandyflower/p/18632173

相关文章

  • 仓颉语言开发环境搭建 —— VSCode篇
    VSCode中搭建仓颉语言运行环境1.仓颉语言简介仓颉编程语言是一款面向全场景智能的新一代编程语言,主打原生智能化、天生全场景、高性能、强安全。主要应用于鸿蒙原生应用及服务应用等场景中,为开发者提供良好的编程体验。是一门静态强类型语言,分为通用版和鸿蒙版,适用于服务......
  • VScode中配置ESlint+Prettier详细步骤(图文详情)
    VScode中配置ESlint+Prettier详细步骤(图文详情)前置环境:node18.19.0vite3.2.11vue3.2.47本文将不在演示vue3基础工程创建,如果还没有vue3项目工程请参考文章:Vite创建Vue3工程并引入ElementPlus(图文详细)本文的ESlint+Prettier版本:ESlint8.57.1Prettier3.2.51ed......
  • 使用msTest对winforms项目进行单元测试
    在同一解决方案下创立单元测试项目这个步骤可以看微软官方文档中的创立单元测试部分需要注意的是:在创建测试项目时,我添加的是单元测试项目(.NETframework)。在将待测项目添加到测试项目的引用中之后,还需要添加引用项:System.Windows.Forms。否则在测试项目中无法使用winforms控......
  • js压缩代码还原的vscode插件
    1.Prettier-Codeformatter:Prettier是一个非常流行的代码格式化工具,支持多种语言,包括JavaScript。它可以按照预设的规则自动格式化你的代码。对于压缩的代码,它能够很好地展开并格式化。2.Beautify:Beautify插件专为美化HTML,CSS,和JavaScript代码而设计。你可......
  • vscode怎么连接远程服务器使用jupyter和pycharm?安装了jupyter插件为什么还是打不开jup
    本文主要从下面三个方面进行1.vscode的优势2.怎么安装并配置vscode3.怎么使用jupyter和pycharm4.我遇到的问题(已解决)(1)显示你即将连接到不受visualstudiocode版本(2)解决安装了jupyter插件但是还是打不开.ipynb文件无法打开笔记本编辑器类型为"jupyter-notebook"的资源......
  • VSCode配置启动Vue项目
    VSCode配置启动Vue项目|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------------|-------------|-------------|--......
  • 定制最小linux系统 - 4: 使用vscode单步调试
    内核毕竟是一个很大的工程,有时看得一头雾水,如果能单步调试的话,对于理解可能有亿点帮助.下面一步步搭建qemu+vscode环境对内核进行单步调试.第一步编译内核定制最小linux系统-1:编译linux内核-CSDN博客https://blog.csdn.net/weixin_46766770/article/details/1......
  • 模拟 AutoMapper 在单元测试中的应用:_mapperMock.Setup 详解
    模拟AutoMapper在单元测试中的应用:_mapperMock.Setup详解在单元测试中,我们经常需要模拟一些外部依赖的行为,比如数据库操作、网络请求或是映射工具。AutoMapper是.NET中广泛使用的对象映射库,它将一个类型的对象转换为另一个类型的对象。为了在单元测试中有效地验证业务逻辑,......
  • Vscode实现应用qss样式表
    qss简介qss(QtStyleSheets)是一种基于CSS的样式语言,用于描述用户界面元素的外观和感觉。qss可以让用户在不修改代码的情况下,轻松地自定义应用程序的外观。其语法基本如下:objectName{property:value;}其中,objectName是要设置样式的对象名,property是要设置的属性,value是属......
  • VScode + cmake编写Qt程序
    本机环境Ubuntu20.04Qt5.12.81.安装Vscode直接在官网下载对应的deb包安装即可。下载后在deb包所在目录执行如下命令安装deb包。sudodpkg-i安装包名.deb然后在应用程序中应该就有了Vscode的图标了。2.安装cmake与gccg++先安装cmakesudoapt-getinstall......