Go Test

测试包

用法:

go test [build/test flags] [packages] [build/test flags & test binary flags]

‘Go test’自动测试由导入路径命名的包。它以以下格式打印测试结果的摘要:

ok   archive/tar   0.011s
FAIL archive/zip   0.022s
ok   compress/gzip 0.033s
...

其次是每个失败包的详细输出。

‘Go test’重新编译每个包以及名称与文件名格式“* test.go”匹配到的任何文件。名称以“_”开头的文件(包括“_test.go”)或“.”
被忽略。这些附加文件可以包含测试功能,基准测试功能和示例功能。有关更多信息,请参阅“go help testfunc”。
每个列出的包都将执行单独的测试二进制文件。

使用后缀“_test”声明包的测试文件将被编译为单独的包,然后使用主测试二进制文件(生成一个临时的main包)进行链接并运行。

go工具将忽略名为“testdata”的目录,使其可用于保存测试所需的辅助数据。

默认情况下,go测试不需要参数。它在当前目录中使用源编译和测试包,包括测试,并运行测试。

测试包内置在临时目录中,因此不会干扰非测试安装。

除了构建标志之外,由’go test’处理的标志是:

    -args
        传递命令行的其余部分(-args之后的所有内容)到测试二进制文件,不解释和不改变。
        因为这个标志消耗命令行之后的其余部分,因此包列表(如果存在)必须出现在此标志之前。

    -c
        将测试二进制文件编译为pkg.test,但不要运行它(其中pkg是包导入路径的最后一个元素)。
        可以使用-o标志更改文件名。

    -exec xprog
        使用xprog运行测试二进制文件。和'go run'行为是一样。
        有关详细信息,请参阅'go help run'-i
        安装与测试相关的软件包,不要运行测试。

    -o file
        将编译的测试二进制文件命名为file。测试仍然运行(除非指定了-c-i)。

测试二进制还接受控制执行测试的标志;这些标志也可以通过’go test’访问。有关详细信息,请参阅“go help testflag”。

go help testflag

“go test”命令包含用于“go test”本身的标志以及适用于结果测试二进制文件的标志。

有几个标志控制分析并编写适合“go tool pprof”的执行配置文件;运行“go tool pprof -h”以获取更多信息。
pprof的--alloc_space, --alloc_objects, 和--show_bytes选项控制信息的呈现方式。

以下标志由“go test”命令识别,控制任何测试的执行:

    -bench regexp
        运行正则表达式匹配到的(子)基准测试。
        给定的正则表达式通过顶级“/”拆分为较小的表达式,其中每个表达式必须与基准标识符的相应部分相匹配。
        默认情况下,没有基准测试运行。为了运行所有的基准测试,请使用'-bench .''-bench=.'-benchtime t
        指定一个time.Duration(例如,-benchtime 1h30s),让每个基准测试t运行足够的迭代次数。
        默认值为1秒(1s)。

    -count n
        运行每个测试和基准n次(默认为1)。如果设置了-cpu,则为每个GOMAXPROCS运行n次。
        Examples总是运行一次。

    -cover
        启用覆盖率分析。

    -covermode set,count,atomic
        设置正在测试的软件包的覆盖率分析模式。默认为“set”,除非启用了-race,在这种情况下,它是“atomic”。
        各模式含义:
        set: bool: 每个语句是否执行?
        count: int: 每个语句执行了几次?
        atomic: int: 类似于 count, 但表示的是并行程序中的精确计数, 明显更昂贵。
        该标志会自动设置-cover.

    -coverpkg pkg1,pkg2,pkg3
        将每个测试中的覆盖率分析应用于给定的软件包列表。
        默认值是每个测试仅分析被测试的包。Packages被指定为导入路径。
        该标志会自动设置-cover.

    -cpu 1,2,4
        指定应执行测试或基准测试的GOMAXPROCS值列表
        (测试运行在哪些CPU上面,使用二进制的1所在位代表,和nginx的nginx_worker_cpu_affinity是一个道理)。
        默认值为GOMAXPROCS的当前值。

    -parallel n
        允许并行执行调用t.Parallel的测试函数。该标志的值是并行运行的最大测试次数;
        默认情况下,它设置为GOMAXPROCS的值。请注意,-parallel仅适用于单个测试二进制文件。
        根据-p标志的设置,“go test”命令也可以并行运行不同程序包的测试(请参阅“go help build”)。

    -run regexp
        仅运行与正则表达式匹配的测试和示例。
        对于测试,正则表达式通过顶级“/”拆分为较小的表达式,其中每个表达式必须与测试标识符的相应部分相匹配。

    -short
        将那些运行时间较长的测试用例运行时间缩短。
        它默认关闭,但在all.bash期间设置,以便安装Go树可以运行健全检查,但不要花时间进行详尽的测试。

    -timeout t
        如果测试运行时间超过t,panic。
        默认为10分钟(10m)。

    -v
        详细输出:记录运行时的所有测试。
        即使测试成功,也可以打印与Log和Logf通话中的所有文本。

以下标志也被’go test’识别,可用于在执行过程中对测试进行配置:

    -benchmem
        打印基准的内存分配统计信息。

    -blockprofile block.out
        当所有测试完成时,将goroutine阻塞分析写入指定的文件。
        -c自动写测试二进制文件。

    -blockprofilerate n
        通过使用n调用runtime.SetBlockProfileRate来控制goroutine阻塞配置文件中提供的详细信息。
        请参阅“go doc runtime.SetBlockProfileRate”。
        控制的是goroutine阻塞时候打点的纳秒数。
        默认情况下,如果-test.blockprofile设置为没有此标志,则会每纳秒记录一次所有阻塞事件,相当于-test.blockprofilerate = 1。

    -coverprofile cover.out
        所有测试通过后,将覆盖率报告写入文件。
        该标志会自动设置-cover.

    -cpuprofile cpu.out
        在退出前将CPU简况写入指定的文件。
        Writes test binary as -c would.

    -memprofile mem.out
        所有测试通过后,将内存简况写入指定的文件。
        Writes test binary as -c would.

    -memprofilerate n
        通过设置runtime.MemProfileRate启用更精确(和昂贵的)内存简况。
        请参阅“go doc runtime.MemProfileRate”。
        要观察所有内存分配详情,请使用-test.memprofilerate = 1和pass -alloc_space标记到pprof工具。

    -mutexprofile mutex.out
        当所有测试完成时,将互斥锁竞争简况写入指定的文件。
        Writes test binary as -c would.

    -mutexprofilefraction n
        Sample 1 in n stack traces of goroutines holding a
        contended mutex.

    -outputdir directory
        放置简况输出文件到指定目录,,默认情况下是运行“go test”的运行目录。

    -trace trace.out
        在退出前将执行跟踪写入指定的文件。

生成覆盖率报告

go tool cover -html=coverprofile.out -o coverage.html

详情参考go tool cover命令帮助。

参考链接: Test packages & Go的测试覆盖率

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值