目的:单元测试的主要目的是验证代码的每个单元(函数、方法)是否按照预期工作。

提示:解决单元测试超时30s的问题在序号4

1 准备以_test.go结尾文件和导入testing包

在命名文件时需要让文件必须以_test结尾,在文件中导入testing包。单元测试源码文件可以由多个测试用例组成,每个测试用例函数需要以Test为前缀

func TestXXX(t *testing.T)

(1) 测试用例文件不会参与正常的源码编译,不会被包含到可执行文件中;

(2) 测试用例文件使用go test指令来执行,没有也不需要main()作为函数入口。所有在以_test结尾的源码内以Test开头的函数会自动被执行;

(3) 测试用例可以不传入*testing.T参数。

测试代码如下:

注意:程序需要有go.mod文件,终端输入命令go mod init module即可生成

 1  package main
2 import (
3 "testing"
4 "fmt"
5 "time"
6 )
7 func Test_Log(t *testing.T) {
8 t.Log("hello world")
9 t.Log("hello world jkjk")
10 fmt.Println("==============Test_Log===============")
11 }
12 func Test_World(t *testing.T) {
13 t.Log("start") time.Sleep(1 * time.Second)
14 t.Log("1s")
15 start := time.Now()
16 time.Sleep(10000 * time.Microsecond)
17 elapsed := time.Since(start)
18 fmt.Println(elapsed)
19 fmt.Println("==============Test_World===============")
20 }

2 终端输入命令进行golang单元测试

(1) go test -v 执行项目中所有的单元测试文件

在终端输入命令:go test -v,执行单元测试并打印详情,PASS表示测试用例运行成功,FAIL表示测试用例运行失败;OK表示执行完成,并且可以看到执行的时长。

(2) go test -v xxx_test.go执行指定单元测试文件

当项目中有多个要执行的测试文件时,可以执行指定单元测试文件,如在终端输入命令:go test -v time_test.go

(1) go test -run xxx -v 执行指定单元测试函数

当测试文件有多个测试函数执行,可以执行指定单元测试函数,如在终端输入命令:

go test -run Test_World -v

3 VScode测试进行golang单元测试

点击VScode视图左侧的测试按钮,点击module展开,可以看到项目的管理文件,点击对应文件的运行测试按钮执行单元测试,如点击module的运行测试按钮则执行所有文件的单元测试,也可以点击打开文件中测试函数的运行测试按钮执行单元测试。

单元测试执行完成后会出现绿色打钩的执行完成图标。点击视图和更多操作按钮(...),点击清除所有结果则执行完成图标消失。

在进行单元测试的过程中,可以点击取消测试运行按钮取消测试。

4   解决golang单元测试超时30s

测试代码如下:

 1  package main
2 import (
3 "testing"
4 "fmt"
5 "time"
6 )
7 func Test_Log(t *testing.T) {
8 t.Log("hello world")
9 t.Log("hello world jkjk")
10 fmt.Println("==============Test_Log===============")
11 }
12 func Test_World(t *testing.T) {
13 t.Log("start") time.Sleep(25 * time.Second)
14 t.Log("25s")
15 start := time.Now()
16 time.Sleep(10000 * time.Microsecond)
17 elapsed := time.Since(start)
18 fmt.Println(elapsed)
19 fmt.Println("==============Test_World===============")
20 }

如果是在终端输入命令:go test -v进行单元测试,执行单元测试的程序总时长超过30s时也能够正常运行。

如果是在VScode的测试中点击运行测试按钮进行单元测试时,执行30s之前的测试函数,超过30s的测试函数则会跳过。

更改go test的超时时长:

(1) 点击VScode左下方的管理图标按钮

(2) 点击设置

(3) 在搜索区域输入:go test timeout

(4) 在Go:test timeout 输入框输入超时时长,如:1h

再次点击运行测试按钮执行单元测试,测试文件都能顺利执行,并且可以看到设置的超时时长1h

VScode 中golang 单元测试,解决单元测试超时timeout30s的更多相关文章

  1. GoStudy——解决vscode中golang插件依赖安装失败问题

    vscode中安装ms-vscode.go插件后可以开启对go语言的支持,ms-vscode.go插件需要依赖一些工具,安装完成后提示 Installing github.com/nsf/gocode ...

  2. 解决vscode中golang插件依赖安装失败问题

    vscode中安装ms-vscode.go插件后可以开启对go语言的支持,ms-vscode.go插件需要依赖一些工具,安装完成后提示 gocode go-outline go-symbols gur ...

  3. 解决 VS Code 中 golang.org 被墙导致的 Go 插件安装失败问题

    微软官方开发的 Go for Visual Studio Code 插件为 Go 语言 提供了丰富的支持.在 VS Code 中首次打开 Go 工作区后,VS Code 会自动检测当前开发环境为 Go ...

  4. Nunit中如何进行事务性单元测试

    单元测试要求:单元测试方法并不真正去变更数据库,也就是说单元测试不依赖于数据库中的数据.那我们如何解决执行单元测试方法后,不变更数据库中数据呢? 一般的解决方案有两种: 1. 新建一个单元测试数据库, ...

  5. 解决vs code中golang插件依赖安装失败问题

    解决vs code中golang插件依赖安装失败问题 Installing github.com/nsf/gocode SUCCEEDED Installing github.com/uudashr/ ...

  6. Django 中的 csrf_token 与单元测试

    Django 中的 csrf_token 与单元测试 在<Python Web开发:测试驱动方法>一书中作者使用的 Django 版本是 1.7,而我使用的是1.9.7版(官网已经更新到1 ...

  7. 在Eclipse中使用JUnit4进行单元测试

    在Eclipse中使用JUnit4进行单元测试(初级篇) 在Eclipse中使用JUnit4进行单元测试(中级篇) 在Eclipse中使用JUnit4进行单元测试(高级篇)

  8. 【Java】在Eclipse中使用JUnit4进行单元测试(初级篇)

    本文绝大部分内容引自这篇文章: http://www.devx.com/Java/Article/31983/0/page/1 我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能 ...

  9. 在Eclipse中使用JUnit4进行单元测试(图文教程一)

    在Eclipse中使用JUnit4进行单元测试 单元测试,JUnit4. 这两个有什么关系呢?这就好比(草)单元测试和(割草机).用这个JUnit4工具去辅助我们进行测试.其实不理解这个也没关系,听多 ...

  10. 在VS Code中对Python进行单元测试

    在VS Code中对Python进行单元测试 Python扩展支持使用Python的内置unittest框架以及pytest和Nose进行单元测试.要使用pytest和Nose,必须将它们安装到当前的 ...

随机推荐

  1. Spring Boot 整合邮件服务

    参考教程 首先参考了 Spring Boot整合邮件配置,这篇文章写的很好,按照上面的操作一步步走下去就行了. 遇到的问题 版本配置 然后因为反复配置版本很麻烦,所以参考了 如何统一引入 Spring ...

  2. MacOS 环境下 VSCode 的 C++ 环境搭建

    编译器安装 编译器可以选择 Clang 或者 GCC,在 MacOS 上 Clang 的安装更为简单一些. Clang(推荐) 打开终端输入命令, clang -v 查看是否已经安装. 如果已经安装, ...

  3. 【解决方法】ASP.NET web 提示错误:CS0103 当前上下文中不存在名称“******”

    问题描述 操作环境与场景: 在 Windows 10 中 Visual Studio 2017 编写网页时,提示报错: 错误 CS0103 当前上下文中不存在名称"******" ...

  4. markdown插入图片、音频视频

    1.markdown 简介 Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档. Markdown 编写的文档后缀为 .md, .markdown 简单易学容易上手,十 ...

  5. google + chatgpt

    google注册 网址:https://www.google.com/ 使用右上角登录按钮 点击创建账户然后根据步骤注册 chagpt注册 1.https://chat.openai.com/auth ...

  6. 自建CA和公共CA有什么不同?

    据统计,全球有数百个公共CA,通常它们是按国家地区进行划分的.这类CA受大众的广泛认可和使用,也被称为公共信任的证书颁发机构.但是由于一些大型企业拥有许多站点,为了更轻松高效的管理以及考虑到维护成本, ...

  7. ssh终端工具推荐-WindTerm

    什么是WindTerm 官方github https://github.com/kingToolbox/WindTerm A Quicker and better SSH/Telnet/Serial/ ...

  8. 云原生背景下如何配置 JVM 内存

    背景 前段时间业务研发反馈说是他的应用内存使用率很高,导致频繁的重启,让我排查下是怎么回事: 在这之前我也没怎么在意过这个问题,正好这次排查分析的过程做一个记录. 首先我查看了监控面板里的 Pod 监 ...

  9. 2019年蓝桥杯C/C++大学B组省赛真题(迷宫)

    题目描述: 下图给出了一个迷宫的平面图,其中标记为1 的为障碍,标记为0 的为可 以通行的地方. 010000 000100 001001 110000 迷宫的入口为左上角,出口为右下角,在迷宫中,只 ...

  10. ps vs top:CPU占用率统计的两种不同方式

    如何计算 CPU 占用率? 简单来说,进程的 CPU 占用率指的是 CPU 有多少时间花费在了运行进程上.在 Linux 系统里,进程运行的时间是以jiffies[1]统计的,通过计算jiffies ...