草庐IT

main_test

全部标签

go - 如何在 GoLang 的命令行上取消设置标志 Visited for Tests

我正在尝试运行每次使用不同参数多次调用同一函数的测试。这是一个接受不同命令行标志的应用程序。如果未提供命令行标志,则使用默认值。flagset=make(map[string]bool)flagset["flag1"]=falseflagset["flag2"]=falseflagset["flag3"]=falseflagset["flag4"]=falsefuncLoadCommandLineArguments(args[]string)error{err:=flag.CommandLine.Parse(args)/*Doerrorhandling*/flag.Visit(func

go - 由于 goroutine,main 即将退出

我正在尝试重新实现/修改thispost的第二条评论的代码.我想要多个go例程从堆栈中弹出元素(只要堆栈包含一些东西),以及另一个函数来捕获它们。Thiscodeinplaygroundfuncpop(list*[]int,cchanint){iflen(*list)!=0{result:=(*list)[0]*list=(*list)[1:]fmt.Println("abouttosend",result)c如果我将receiver(c)设为go例程,则只会打印“Main”,并且程序将退出而不等待Scan()函数。即使添加time.Sleep(2)也不会阻止程序退出。为什么我的程序没

time - 戈朗 : throttle (time delay) function is not working in goroutine (works fine in main thread)

所以我正在编写一个实用程序来查询工作中的API,它们将每10秒限制为20次调用。很简单,我会将我的通话时间限制在自上次通话后至少0.5秒。在我尝试使用goroutine之前,我的Throttle实用程序运行良好。现在我正在使用结构/方法组合:func(c*CTKAPI)Throttle(){ifc.Debug{fmt.Println("\t\t\tEnteringThrottle()")}for{//incasesomethingelsemakesacallwhilewe'resleeping,weneedtore-checkift:=time.Now().Sub(c.LastCall

unit-testing - 使用 aetest.NewContext 代替 endpoints.NewContext 以强一致性测试 go-endpoints

我有一个搜索方法:func(sa*SearchApi)Search(cendpoints.Context,r*SearchQuery)(*SearchResults,error){..}如您所见,它需要一个端点。上下文例如:ctx:=endpoints.NewContext(req1)但是对于aetest,我使用的是不同的上下文:otherCtx,err:=aetest.NewContext(&aetest.Options{"",true})特别是这个上下文有额外的强一致性选项-因为我正在设置数据所以我可以测试一个只读的api。我无法将otherCxt传递给我的Search方法,因为它

unit-testing - Golang Mocking - 类型冲突问题

我正在模拟一个DataStore及其获取/设置功能。我遇到的问题是:不能在EventHandler的参数中使用s(类型*MockStore)作为类型*datastore.Storage这是因为我的EventHandler函数需要传递一个*datastore.Storage作为参数类型。我想使用我创建的MockStore而不是真正的数据存储来测试(http测试)EvenHandler()。我正在使用golangtestify模拟包。一些代码示例typeMockStorestruct{mock.Mock}func(s*MockStore)Get()...funcEventHandler(w

unit-testing - App Engine 本地单元测试不同实例 [GO]

我在测试单独的方法时遇到问题,每个测试用例都在不同的实例和地址上运行。我正在寻找一种方法来设置API地址,以便在同一API服务器上执行测试。我假设此警告是问题的一部分。WARNING2015-11-0418:15:25,003devappserver2.py:779]DEFAULT_VERSION_HOSTNAMEwillnotbesetcorrectlywith--port=0此命令将设置API服务器,但我不能为测试做同样的事情...dev_appserver.py.--api_port55555 最佳答案 使用aetest.Ne

unit-testing - 运行 Ginkgo 测试套件(在运行任何规范之前设置 BeforeSuite

我正在使用Ginkgo(和Gomega)包对Go(lang)RestAPI进行单元测试。我需要使用全局设置,这应该可以通过定义来实现var_=BeforeSuite(func(){...})然后每个规范(具体的_test.go)应该在这个全局设置之后运行。不幸的是我不能让这发生......我的套件文件名为handlers_suite_test.go我的第一个测试规范名称是cartContentsHandler_test.go.在我看来,Ginkgo按字母顺序运行测试文件,使得cartContentsHandler_test.go运行之前handlers_suite_test.go.我放

go - 我的 main.go 文件看不到其他文件

我需要一些帮助来了解我的文件布局在一个简单的网络应用程序中有什么问题。$GOPATH/src/example.com/myweb然后我有2个文件:$GOPATH/src/example.com/myweb/main.go$GOPATH/src/example.com/myweb/api.go两个文件都有:主要包api.go文件如下所示:packagemainimport("bytes""encoding/json""fmt""io""net/http""time")typeAPIstruct{URIstringTokenstringSecretstringclient*http.Cli

unit-testing - Golang - 多个包的有效测试

我想从我的应用程序执行所有测试,现在我用命令来执行:gotest./app/...不幸的是,它需要相当长的时间,尽管单个测试运行得非常快。我认为问题在于go在运行测试之前需要编译每个包(及其依赖项)。我尝试使用-i标志,它有点帮助,但我仍然对测试时间不满意。gotest-i./app/...gotest./app/...您是否知道如何有效地测试多个包。 最佳答案 这就是gotest的本质:它构建了一个特殊的运行时,其中包含要执行的附加代码(这就是它跟踪代码覆盖率的方式)。如果速度不够快,您有两个选择:1)使用bash工具编译包列表(

unit-testing - Golang中Stubb接口(interface)指针参数

假设我有一个将客户端ID映射到net.Conns(接口(interface))的存储。为了简单起见,它只是在其中隐藏了一个map并将map键作为参数。我想消除对值复制的需求,而且我来自Java领域,因此映射应该将id映射到net.Conn指针似乎是合乎逻辑的。typeStoragestruct{connsmap[int]*net.Conn}func(s*Storage)Add(idint,conn*net.Conn){s.conns[id]=conn}...methodsforinitialisingnewstorage,getting,deleting,maybegivinglist