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

提示:解决单元测试超时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. 你知道Object类和Objects的常用方法吗

    文章目录 Object的常用方法 Objects的常用方法 hashCode hash isNull equals requireNonNull compare nonNull 大家好,Leo又来了! ...

  2. \n 和 std::endl 的区别

    std::cout << std::endl; 等价于 std::cout << '\n' << std::flush; 除了写入换行符,std::endl 还会刷 ...

  3. [OS/Linux] Linux核心参数:net.core.somaxconn(高并发场景核心参数)

    0 序言 近期工作在搞压力测试,我负责开发维护的.基于sring-cloud-gateway的大数据网关微服务,其底层是基于spring-webflux-->reactor-netty--> ...

  4. 2023-04-28:将一个给定字符串 s 根据给定的行数 numRows 以从上往下、从左到右进行 Z 字形排列 比如输入字符串为 “PAYPALISHIRING“ 行数为 3 时,排列如下 P

    2023-04-28:将一个给定字符串 s 根据给定的行数 numRows 以从上往下.从左到右进行 Z 字形排列 比如输入字符串为 "PAYPALISHIRING" 行数为 3 ...

  5. 2022-04-22:给你两个正整数数组 nums 和 target ,两个数组长度相等。 在一次操作中,你可以选择两个 不同 的下标 i 和 j , 其中 0 <= i, j < nums.leng

    2022-04-22:给你两个正整数数组 nums 和 target ,两个数组长度相等. 在一次操作中,你可以选择两个 不同 的下标 i 和 j , 其中 0 <= i, j < num ...

  6. windows-重启打印服务

    @echo off color a net stop spooler net start spooler ping -n 4 localhost >nul

  7. 解决:Invalid HTTP_HOST header: '192.168.56.1:8001'. You may need to add '192.168.56.1' to ALLOWED_HOSTS.

    在setting.py下的ALLOWED_HOSTS=['*']添加'*'就可以解决显示不出来的问题.

  8. 原来.NET写的Linux桌面这么好看?

    如何使用Blazor在Linux平台下运行Desktop程序 本文将讲解如何使用Blazor运行跨平台应用,应用到的技术有以下几点 Blazor Masa Blazor Photino.Blazor ...

  9. SpringBoot进阶教程(七十六)多维度排序查询

    在项目中经常能遇到,需要对某些数据集合进行多维度排序的需求.对于集合多条件排序解决方案也有很多,今天我们就介绍一种,思路大致是设置一个分值的集合,这个分值是按照需求来设定大小的,再根据分值的大小对集合 ...

  10. 手动删除了Linux下syslog--/var/log/messages怎么办?

    引言 Linux小白很容易犯得一个错误就是:查看日志的时候,尤其是系统日志,由于日志太多,把系统日志手动删除了.也就是把/var/log/messages文件删除了,而不是删除文件的内容.直接删除文件 ...