草庐IT

power_unit

全部标签

unit-testing - 在 golang 中实现嵌套接口(interface)

我有一个包含很多子方法的接口(interface)。typeInterfaceCheckoutinterface{GetID()intGetItems()[]InterfaceCartItem//...thenlike30moremethods}我有一个只使用GetItems方法的方法。funcGetRates(checkoutIInterfaceCheckout)[]Rate{for_,item:=rangecheckoutI.GetItesm(){p:=item.GetProduct()}}我希望能够测试此GetRates方法,而无需模拟InterfaceCheckout中的所有方

unit-testing - 在 Go 中为 httptest.NewServer 使用自定义 URL

我通过在Go语言中创建一个http测试服务器来在一些rest调用上运行UT。我的代码如下。typestudentstruct{FirstNamestringLastNamestring}functestGetStudentName(){testServer:=httptest.NewServer(http.HandlerFunc(func(whttp.ResponseWriter,r*http.Request){response=new(student)response.FirstName="Some"response.LastName="Name"b,err:=json.Marsha

unit-testing - 是否可以在 go test 中跨单元测试共享上下文?

我正在Go中实现一个trie作为学习语言的一种方式。我想从一开始就编写测试,以此来感受Go的处理方法。我在测试trie时遇到的一个问题是我必须为每个单元测试重建它。有没有办法在单元测试中重用我的特里树的相同实例?理想情况下,我想要一种无需任何外部依赖项即可执行此操作的方法。 最佳答案 是的:只需在trie_test.go的funcinit()中构造它。(或者甚至使用文字。) 关于unit-testing-是否可以在gotest中跨单元测试共享上下文?,我们在StackOverflow上找

unit-testing - 标准库错误的覆盖率测试

我一直在尝试了解Go的内置测试框架并获得适当的测试覆盖率。在我正在测试的其中一个文件中,我只获得了大约87%的覆盖率:覆盖率:87.5%的语句下面是测试中的部分代码://Checkthattheworkingdirectoryissetif*strctFlags.PtrWorkDir==""{//iftheworkingdirectoryisempty,setittothecurrentdirectorystrTemp,err:=os.Getwd()iferr!=nil{return"",errors.New("Couldnotgetcurrentworkingdirectory")}

unit-testing - 如何在 Golang 测试文件中构建导入

我在main.go中定义了无法在main_test.go中访问的函数。但是,在一些在线教程中,我看到函数是可访问的:我想了解其中的区别,以及如何以惯用的方式构建这些函数。具体来说,我有一个包含多个二进制文件的应用程序:myapp/cmd/app/main.gomyapp/cmd/cli/main.go我目前在main.go文件的funcmain中运行了很多简单的单元测试逻辑。我只是测试单个函数并让它们打印输出,如果我能避免的话,我不会尝试调用“测试”套件的全部功能。由于此时我在main.go顶部的测试太长了,我想将它们移动到特定的测试文件中,例如:myapp/cmd/app/main_

unit-testing - 使 os.Stat 抛出错误,使 IsNotExist 返回 false

我正在尝试测试以下分支:if_,err:=os.Stat(path);err!=nil{ifos.IsNotExist(err){continue}returnerrors.File().AddDetails(err)}显然,如果path不存在,os.Stat将抛出错误。ReadingtheGolangdocumentation不返回有关os.Stat可能返回的错误的详细信息。有没有办法让os.Stat抛出另一种错误? 最佳答案 您可以通过传递无效的文件名导致错误,例如IsNotExist返回false。packagemainimp

unit-testing - 仅为 _test.go 文件定义结构

我有以下文件树结构:-app/---tool/-----/tool_test.go-----/tool.go-----/proto/proto.go-----/proto/proto_test.go我需要使用一个(虚拟)结构在tool_test.go和proto_test.go中实现一个接口(interface):typeDummyRetrieverstruct{}func(dummy*DummyRetriever)Retrieve(namestring)(string,error){return"",nil}如果我只在tool_test.go中定义它,我无法在proto_test.g

unit-testing - 如何运行 'go test' 并包含单元测试文件但排除其他测试文件

这个问题在这里已经有了答案:SeparatingunittestsandintegrationtestsinGo(6个答案)关闭5年前。我正在尝试在现有的Go项目上自动运行单元测试。它已经有很多现有的测试,这些测试可以做非单元测试的事情,比如联系外部服务和写入数据库。我想使用命名约定从自动化中排除这些测试文件。假设项目的结构是这样的:gopath/|-package1.go|-package1_unit_test.go|-package1_e2e_test.go|-package2/|-package2.go|-package2_unit_test.go|-package2_e2e_t

unit-testing - 如何模拟 http.Head()

我正在研究来自https://github.com/golang/example/tree/master/outyet的示例项目.testfile不包括http.Head(url)的情况返回错误。我想扩展单元测试以涵盖记录错误的if语句(https://github.com/golang/example/blob/master/outyet/main.go#L100)。我想模拟http.Head(),但我不确定该怎么做。如何做到这一点? 最佳答案 http.Head函数只是调用Headmethod在默认HTTP客户端上(显示为htt

unit-testing - 使用 testing.T 作为匿名结构字段 : "too many arguments in call to this.T.common.Fail"

我正在尝试解决KarateChopGo中的kata作为练习,并在我的测试用例中遇到了这个编译器错误:toomanyargumentsincalltothis.T.common.Fail我将testing.T包装到一个带有附加方法的结构中,作为一个匿名结构字段:packagemainimport("fmt""testing")typeassertionsstruct{*testing.T}func(thisassertions)assert_equal(expectedint,actualint){if(expected!=actual){this.Fail(fmt.Sprintf("F