go test测试文件应该放置与何处?

XinhongWu · 2019-02-21 09:48:32 · 4764 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2019-02-21 09:48:32 的主题,其中的信息可能已经有所发展或是发生改变。

go test文件应该放在哪里?

go test的命名约束

请大家参见如下的博客:https://blog.csdn.net/code_segment/article/details/77507491

  • 文件名必须是_test.go结尾的(文件名必须是*_test.go的类型,*代表要测试的文件名),这样在执行go test的时候才会执行到相应的代码

  • 你必须importtesting这个包

  • 所有的测试用例函数必须是Test开头(函数名必须以Test开头如:TestXxx或Test_xxx)

  • 测试用例会按照源代码中写的顺序依次执行

  • 测试函数TestXxx()的参数是testing.T,我们可以使用该类型来记录错误或者是测试状态

  • 测试格式:func TestXxx (t *testing.T),Xxx部分可以为任意的字母数字的组合,但是首字母不能是小写字母[a-z],例如Testintdiv是错误的函数名。

  • 函数中通过调用testing.TError,Errorf,FailNow,Fatal,FatalIf方法,说明测试不通过,调用Log方法用来记录测试的信息。

go test文件放置何处

对比如下的2种情况:

1.go test文件与源文件放置在相同的目录

在相同的目录下,不能声明多个package,否则会报如下的错误:

D:\workspace\go\src\tryme\add>go test

can't load package: package tryme/add: found packages add (add.go) and me (add_test.go) in D:\workspace\go\src\tryme\add

在相同的目录下,也就是在相同的package下,接口是可见的,不需要在test文件中引入待测试接口的package,否则会提示出现import cycle:

D:\workspace\go\src\tryme\add>go test

# tryme/add

import cycle not allowed in test

因此,主要直接使用接口就可以。

2.go test文件与源文件没有放置到不同的目录下

可将单元测试文件与源文件进行分离,方便集中进行管理。

此时需要注意的事项包括:

  • 需要import导入源文件所在的包,使用接口时,也需要使用“package_name.API”的方式引用。

  • go_test文件使用任意的包名即可,但是要保证是完全一致的,因为一个目录下只能有一个包名。


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4764 次点击  
加入收藏 微博
1 回复  |  直到 2019-02-21 10:22:03
XinhongWu
XinhongWu · #1 · 6年之前

补充一条。 go test文件中,还可以增加benchmark用例。 差别在于:benchmark用例必须以Benchmark开头,且在运行时一定要加-bench参数,例如: go test -bench=. go test只会运行Test开头的用例。 TestMain(m *testing.M) 是一个总管初始化入口,可以将数据库,网络等一些初始化操作放置到这里。 Benchmark测试用例需要保证其执行能在一个稳态上,否则可能b.N为了适应变化,不断调整N值,导致无法运行完成。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传