草庐IT

test-only

全部标签

unit-testing - 如何测试/重构测试调用 http.ListenAndServe 的函数

我正在学习go并且正在开发一个简单的服务,该服务从队列中提取一些数据并将其保存在数据库中。它还运行一个网络服务器以允许抓取数据。现在我有两个go文件(为简洁起见省略了一些文本):funcmain(){parseConfig()s:=&Service{ServiceConfig:config}err:=s.Run()iferr!=nil{panic(err)}}然后是服务的定义(为简洁起见,再次省略了一些部分):func(s*Service)Run()error{iferr:=s.validate();err!=nil{returnerr}iferr:=s.initDB();err!=n

unit-testing - Uber Cadence 事件的单元测试上下文

我正在为使用UUID从联系人服务检索联系人的节奏事件功能编写单元测试。我想知道我应该将什么上下文传递给节奏事件。activity.Register(GetContactActivityFunc)funcGetContactActivityFunc(ctxcontext.Context,inputContactBbInput)(ContactBbOutput,error){...}这是测试函数。funcTestGetContactActivityFunc(t*testing.T){mockCSInterface:=&mocks.Interface{}csClient:=outbound.

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

select - golang : channel in select statement is only receiving sometimes (? ??)

我在从两个channel接收的go例程中有一个select语句。for{fmt.Printf("Waitingforselectstatement...\n")select{casereq:=如果调用函数两次发送到第一个channel然后发送到第二个channel一切正常:requestChan控制台输出(正确)是:>Waitingforselectstatement...>Igotarequest:{Loginyaylaswiese}>Waitingforselectstatement...>SendingtruetothedoneChannel>Igotarequest:{Sign

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.我放

golang代码组织: where should I put custom error types that are only relevant to one function?

我刚刚开始处理我的第一个golang项目,非常喜欢从函数返回自定义错误类型并在调用代码中使用类型断言来检查特定错误的想法。我发现这个解决方案比总是比较错误消息更清晰。我唯一的问题是:您最好将这些自定义错误类型放在哪里?假设许多自定义错误类型仅由一个实用程序函数使用(返回),它们应该与函数放在同一个包中吗?我应该以某种方式将它们分组吗?或者也许有更好的方法来做这种事情.. 最佳答案 “相同的包裹”是我最初的想法。在某些情况下,将它们放在不同的包中是有意义的,但只有当它们从多个包中的函数中合法地出现“相同的错误”时,并且这些包都不是逻辑

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

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