GO Test 单元测试&压力测试

背景

本文主要介绍golang的一个工具go test
Go语言中自带有一个轻量级的测试框架testing和自带的go test命令来实现单元测试和性能测试,testing框架和其他语言中的测试框架类似,你可以基于这个框架写针对相应函数的测试用例,也可以基于该框架写相应的压力测试用例

go test 单元测试介绍

规则

  • 文件名必须是_test.go结尾的,这样在执行go test的时候才会执行到相应的代码
  • 你必须import testing这个包
  • 所有的测试用例函数必须是Test开头
  • 测试用例会按照源代码中写的顺序依次执行
  • 测试函数TestXxx()的参数是testing.T,我们可以使用该类型来记录错误或者是测试状态
  • 测试格式:func TestXxx (t *testing.T),Xxx部分可以为任意的字母数字的组合,但是首字母不能是小写字母[a-z],例如Testintdiv是错误的函数名。
  • 函数中通过调用testing.T的Error, Errorf, FailNow, Fatal, FatalIf方法,说明测试不通过,调用Log方法用来记录测试的信息。

编译方式

  • go test . 编译当前文件夹所有test测试用例
  • go test -p 编译这个包测试
  • go test -v 打印测试信息(默认不打印测试通过信息)

例子

package test

import "testing"

func TestCount(t *testing.T) {
    count := 0
    if count != 0 {
        t.Error("Test No Accept")
    } else {
        t.Log("Test Accept")
    }
}

func TestCount1(t *testing.T) {
    t.Error("Test Error")
}

go test .
![测试结果](/Users/yidwang/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1520990951/QQ/Temp.db/3.png)
go test -v .
![测试结果](/Users/yidwang/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1520990951/QQ/Temp.db/2.png)

go test 压力介绍

规则

  • 压力测试用例必须遵循如下格式,其中XXX可以是任意字母数字的组合,但是首字母不能是小写字母 func BenchmarkXXX(b *testing.B) { … }
  • 在压力测试用例中,请记得在循环体内使用testing.B.N,他默认设置轮询次数,保证程序正常退出
  • 其他约束跟单员测试相同

编译方式

  • go test不会默认执行压力测试的函数,如果要执行压力测试需要带上参数-bench,例如go test -bench=”.*” 表示测试全部的压力测试函数
  • go test -count 测试例子执行测试
  • go test -run=name 要测试的文件名字

例子

package test

import "testing"

func Add(a int, b int) int {
    return a + b
}
func Benchmark_Addd(b *testing.B) {
    for i := 0; i < b.N; i++ {
        Add(i, i*10)
    }
}

![测试结果](/Users/yidwang/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1520990951/QQ/Temp.db/4.png)
![测试结果](/Users/yidwang/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1520990951/QQ/Temp.db/6.png)

go test 测试函数介绍中文链接:https://studygolang.com/articles/5494

参考链接:http://studygolang.com/wr?u=http%3a%2f%2fwww.cnblogs.com%2fdiegodu%2fp%2f5464802.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Google Test单元测试,你可以在C++项目中使用Google Test框架来编写和运行单元测试。 首先,你需要在项目中包含Google Test库。你可以从Google Test的官方GitHub仓库下载最新版本的源代码,并将其添加到你的项目中。 在编写单元测试之前,你需要创建一个测试文件。这个文件应该包含一个或多个测试用例,每个测试用例都是一个函数。你可以使用Google Test提供的宏来定义和运行测试用例。 一个简单的示例代码如下: ```c++ #include <gtest/gtest.h> // 定义一个测试用例 TEST(ExampleTest, Addition) { int a = 2; int b = 3; int result = a + b; EXPECT_EQ(result, 5); } // 定义另一个测试用例 TEST(ExampleTest, Subtraction) { int a = 5; int b = 3; int result = a - b; EXPECT_EQ(result, 2); } int main(int argc, char** argv) { // 初始化 Google Test 框架 ::testing::InitGoogleTest(&argc, argv); // 运行所有的测试用例 return RUN_ALL_TESTS(); } ``` 在这个例子中,我们定义了两个测试用例:Addition和Subtraction。每个测试用例都包含一些断言,用于验证预期结果和实际结果是否相等。在main函数中,我们初始化Google Test框架并运行所有的测试用例。 要编译和运行这个测试文件,你需要将Google Test库链接到你的项目中。具体的编译和链接过程可能因你使用的开发环境而有所不同。 当你运行这个测试文件时,Google Test将会执行所有的测试用例,并输出测试结果。如果所有的断言都通过了,测试将会被标记为通过;否则,测试将会被标记为失败,并显示详细的错误信息。 这只是一个简单的示例,Google Test还提供了很多其他的功能和特性,例如测试夹具、参数化测试、测试报告等。你可以查阅Google Test的官方文档以获取更多信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值