我正在使用“测试”包。像下面这样运行我的测试。funcTestMain(m*testing.M){...//Setupos.Exit(m.Run())//Teardown}这将在运行任何测试之前运行设置,并在所有测试完成后进行拆卸。我确实需要这个,因为设置会设置数据库。而且,我需要,但还没有找到一种方法来运行每个测试设置/拆卸。对于我正在运行的单元测试,我想在每次测试之前清除DB,这样DB的内容就不会出现导致意外行为的问题。 最佳答案 UpdateforGo1.14(2020年第一季度)testing包现在支持清理函数,在测试或基准
我目前正在考虑为Go中的net.Conn接口(interface)以及在该功能之上构建的其他函数创建一些单元测试,我想知道在Go中进行单元测试的最佳方法是什么谷歌去?我的代码如下:conn,_:=net.Dial("tcp","127.0.0.1:8080")...fmt.Fprintf(conn,"test")...buffer:=make([]byte,100)conn.Read(buffer)测试此代码和使用这些函数启动单独的goroutine以像服务器一样运行的代码是最有效的方法,使用net.http.httptestpackage,还是别的什么?
当我运行“gotest”时,我想使用不同的配置文件。我如何在我的代码中知道我是在测试上下文还是正常上下文中运行?是否需要检查某种环境变量? 最佳答案 测试包在加载时会修改全局环境:它注册了很多命令行标志。因此,我们可以检查这些标志是否已注册:funcinit(){ifflag.Lookup("test.v")==nil{fmt.Println("normalrun")}else{fmt.Println("runundergotest")}} 关于unit-testing-我怎么知道我在"
我想测试我的主包中包含的一些函数,但我的测试似乎无法访问这些函数。我的示例main.go文件如下所示:packagemainimport("log")funcmain(){log.Printf(foo())}funcfoo()string{return"Foo"}我的main_test.go文件看起来像:packagemainimport("testing")funcFoo(ttesting.T){t.Error(foo())}当我运行gotestmain_test.go我得到#command-line-arguments.\main_test.go:8:undefined:fooFA
在我的Go包中有几个基准文件,例如map1_benchmark_test.go和map2_benchmark_test.go。在每个*_benchmark_test.go文件中,都有多个基准函数,例如funcBenchmarkMapTravel(b*testing.B)和funcBenchmarkMapGet(b*testing.B).问题是,我怎样才能只测试一个基准函数?我尝试阅读一些手册,但运行gohelptest对基准测试一无所知。 最佳答案 Descriptionoftestingflags-test.benchpatter
我们的部分代码是时间敏感的,我们需要能够保留一些东西,然后在30-60秒等内释放它,我们可以做一个time.Sleep(60*time.Second)我刚刚实现了时间接口(interface),并且在测试期间使用了时间接口(interface)的stub实现,类似于thisgolang-nutsdiscussion.但是,time.Now()在多个站点中被调用,这意味着我们需要传递一个变量来跟踪我们实际睡了多少时间。我想知道是否有另一种方法可以在全局范围内stubtime.Now()。是否可以进行系统调用来更改系统时钟?也许我们可以编写自己的时间包,它基本上包含时间包但允许我们更改它?
我正在为我的Go应用程序编写一些单元测试。然而,测试失败,因为它找不到配置文件。通常二进制文件会在conf/*.conf路径下的工作目录中查找配置文件。我认为浏览到有conf/的目录并在其中运行gotest可以解决它,但它仍然报告文件系统找不到路径指定。如何告诉gotest使用某个目录作为工作目录,以便实际执行测试? 最佳答案 您也许可以使用Caller来获取当前测试源文件的路径,如下所示:packagesampleimport("testing""runtime""fmt")funcTestGetFilename(t*testin
我对在go中为“未导出(私有(private))函数”创建单元测试很感兴趣。但是,基本上很难在测试包中创建单元测试,因为我必须将它们“公开”。最终,这违背了他们私密的全部意义。关键是这些辅助函数有助于模块化,现在它们是模块化的,如果能够为它们创建单元测试而不使除测试包之外的所有人都可以使用它们,那就太好了,它们不是应该访问的函数或由测试套件或实际包本身以外的任何其他人使用。有什么建议吗?是否可以仅导出到自己的包和1个额外的包或类似的东西? 最佳答案 在包中创建一个测试文件library_test.gopackagemypkgfunc
我对依赖关系感到困惑。我希望能够用模拟函数调用替换一些函数调用。这是我的代码片段:funcget_page(urlstring)string{get_dl_slot(url)deferfree_dl_slot(url)resp,err:=http.Get(url)iferr!=nil{return""}deferresp.Body.Close()contents,err:=ioutil.ReadAll(resp.Body)iferr!=nil{return""}returnstring(contents)}funcdownloader(){dl_slots=make(chanbool,
对于布局,我们有著名的“Loremipsum”文本来测试它的外观。我正在寻找的是一组包含用几种不同编码编码的文本的文件,我可以在我的JUnit测试中使用这些文件来测试一些在读取文本文件时处理字符编码的方法。例子:有一个ISO8859-1编码的测试文件和一个Windows-1252编码的测试文件。Windows-1252必须触发区域8016–9F16的差异。换言之,它必须至少包含该区域的一个字符,才能将其与ISO8859-1区分开来。也许最好的测试文件集是每个编码的测试文件包含一次它的所有字符。但也许我不知道……我们都喜欢这种编码的东西,对吧?:-)是否有这样一套针对字符编码问题的测试文