zoukankan      html  css  js  c++  java
  • go test小记

    golang使用test来进行单元测试,命令如下

    go test [packages]

    上面命令中packages可以省略,如果省略则是directory mode模式,不省略则是package list mode模式。

    directory mode模式是运行当前目录下 _test.go 后缀的测试文件。

    package list mode模式是运行指定目录下 _test.go 后缀的测试文件。

    两者区别是directory mode模式会禁用cache,显示测试文件中的输出,测试结束后会打印状态,package名字以及耗时。

    package list mode模式会启用cache,仅仅显示测试结果。如要禁用cache缓存,则可以使用一些flag选项来阻止,比如-count=1。如果要显示一些测试函数中的输出,则需要提供一个-v选项。

    go test会运行 _test.go 后缀测试文件中以 TestXxx开头的函数,Xxx 可以是任何以字母开头的字母数字字符串,但是第一个字母不能是小写字母,如果是小写的,则不会运行。而 Xxx 到底如何命名是无关紧要的,比如要测试 twoSum( )函数,则可以叫 TestFuncOf2Sum(),这里FuncOf2Sum不需要对应twoSum这个名字,FuncOf2Sum只是用于标识test goroutine的(where Xxx does not start with a lowercase letter. The function name serves to identify the test routine.)。

    go test 如何运行指定测试函数呢?网上很多博客说使用下面的方法就能运行指定测试函数:

    go test -v -test.run TestXxx
    //或者
    go test -v -run TestXxx

    其实这种说法是错误的,因为run选项指定的并不是某个测试函数,而是一个正则匹配,对于 TestXxx  这种函数指明,其实匹配的是 TestXxx*,也即 TestXxx、TestXxx1、TestXxxYyy,这种都是匹配的。

    The argument to the -run and -bench command-line flags is an unanchored regular expression that matches the test's name. 

    go test -run Foo     # Run top-level tests matching "Foo", such as "TestFooBar".
    

    要测试某个具体指定的测试函数,应该使用下面的命令:

    go test '-run=^TestXxx$'

    run中指定的函数是以Test开头,以Xxx结尾,也就是完全匹配TestXxx这个函数。

  • 相关阅读:
    Proj THUDBFuzz Paper Reading: The Art, Science, and Engineering of Fuzzing: A Survey
    Proj THUDBFuzz Paper Reading: A systematic review of fuzzing based on machine learning techniques
    9.3 付费代理的使用
    11.1 Charles 的使用
    第十一章 APP 的爬取
    10.2 Cookies 池的搭建
    10.1 模拟登录并爬取 GitHub
    11.5 Appium 爬取微信朋友圈
    11.4 Appium 的基本使用
    11.3 mitmdump 爬取 “得到” App 电子书信息
  • 原文地址:https://www.cnblogs.com/pluse/p/13296403.html
Copyright © 2011-2022 走看看