在Go中自定义测试

时间:2014-08-21 07:15:48

标签: go

我有一个在GO中运行测试用例的场景,我知道例如:first_test.go的测试文件将在第二次或第三次尝试后通过,

假设它正在调用与数据库的连接或调用REST服务或任何其他典型方案。

正在查看$go test命令中可用的选项,但许多尝试都没有可用的参数。 有没有办法实现文件的尝试或从静态文件调用方法包含任何方法尝试3-4次,如这个典型的文件场景:

func TestTry(t *testing.T) {
    //Code to connect to a database
}

3 个答案:

答案 0 :(得分:2)

一个习惯用语是使用构建标志。仅为集成测试创建一个特殊的测试文件并添加

// +build integration
package mypackage
import testing

然后运行集成运行测试:

go test -tags=integration

然后你可以添加逻辑

// +build integration
package testing

var maxAttempts = flag.Int(...)

func TestMeMaybe(t *testing.T){
 for i :=0 ; i < *maxAttempts; i++ {
   innerTest()
 }
}

答案 1 :(得分:1)

不,这很奇怪:如果有时候随机成功,测试会有什么好处?

为什么不要&#34;尝试&#34;你自己里面测试?真正的测试要么通过要么失败,你要处理关于&#34的知识;我需要尝试&#39;尝试&#39;调用此外部资源n次以唤醒它。&#34;

答案 2 :(得分:1)

这不是测试的工作方式:测试是告诉您代码是否按预期工作,而不是告诉外部资源是否可用。

使用外部资源(例如web服务或api)时,最简单的方法是通过制作返回有效响应的虚假调用来模拟其功能,然后在其上运行代码。然后,您将能够测试您的代码。