草庐IT

statistical-test

全部标签

testing - 如何衡量 Golang 集成测试覆盖率?

我正在尝试使用gotest-cover来衡量我正在构建的服务的测试覆盖率。它是一个RESTAPI,我正在通过旋转它、发出测试HTTP请求并查看HTTP响应来对其进行测试。这些测试不是服务包的一部分,gotoolcover返回0%的测试覆盖率。有没有办法获得实际的测试覆盖率?我希望在给定端点上的最佳案例场景测试能够覆盖特定端点处理程序的至少30-50%的代码,并通过添加更多常见错误测试来进一步改进这一点。 最佳答案 我被指向了-coverpkg指令,它可以满足我的需要-测量特定包中的测试覆盖率,即使测试使用了这个包而不是它的一部分。例

unit-testing - 对使用 gorilla/mux URL 参数的函数进行单元测试

TLDR:gorilla/mux过去不提供设置URLVars的可能性。现在确实如此,这就是为什么在很长一段时间内,第二高的答案是正确答案。要遵循的原始问题:这就是我想要做的:ma​​in.gopackagemainimport("fmt""net/http""github.com/gorilla/mux")funcmain(){mainRouter:=mux.NewRouter().StrictSlash(true)mainRouter.HandleFunc("/test/{mystring}",GetRequest).Name("/test/{mystring}").Methods(

unit-testing - 对使用 gorilla/mux URL 参数的函数进行单元测试

TLDR:gorilla/mux过去不提供设置URLVars的可能性。现在确实如此,这就是为什么在很长一段时间内,第二高的答案是正确答案。要遵循的原始问题:这就是我想要做的:ma​​in.gopackagemainimport("fmt""net/http""github.com/gorilla/mux")funcmain(){mainRouter:=mux.NewRouter().StrictSlash(true)mainRouter.HandleFunc("/test/{mystring}",GetRequest).Name("/test/{mystring}").Methods(

unit-testing - 如何模拟 http.Client Do 方法

我正在尝试寻找一种解决方案来编写测试和模拟HTTP响应。在我接受接口(interface)的函数中:typeHttpClientinterface{Do(req*http.Request)(*http.Response,error)}我使用基本身份验证发出http获取请求funcGetOverview(clientHttpClient,overview*Overview)(*Overview,error){request,err:=http.NewRequest("GET",fmt.Sprintf("%s:%s/api/overview",overview.Config.Url,ove

unit-testing - 如何模拟 http.Client Do 方法

我正在尝试寻找一种解决方案来编写测试和模拟HTTP响应。在我接受接口(interface)的函数中:typeHttpClientinterface{Do(req*http.Request)(*http.Response,error)}我使用基本身份验证发出http获取请求funcGetOverview(clientHttpClient,overview*Overview)(*Overview,error){request,err:=http.NewRequest("GET",fmt.Sprintf("%s:%s/api/overview",overview.Config.Url,ove

unit-testing - 忽略 Golang 测试覆盖率计算中的代码块

我正在为我的golang代码编写单元测试,在计算覆盖率时我希望忽略一些方法。这可能吗?如果有,怎么做? 最佳答案 一种方法是将您不想测试的函数放在单独的go文件中,并使用构建标签来防止在测试期间包含它。例如,我有时会在应用程序中执行此操作,其中我的main.go文件带有main函数,可能是使用函数等,但未经过测试。然后你可以添加一个测试标签或其他东西,比如gotest-v-cover-tagstest主要看起来像://+build!testpackagemainfuncmain(){//dostuff}funcusage(){//s

unit-testing - 忽略 Golang 测试覆盖率计算中的代码块

我正在为我的golang代码编写单元测试,在计算覆盖率时我希望忽略一些方法。这可能吗?如果有,怎么做? 最佳答案 一种方法是将您不想测试的函数放在单独的go文件中,并使用构建标签来防止在测试期间包含它。例如,我有时会在应用程序中执行此操作,其中我的main.go文件带有main函数,可能是使用函数等,但未经过测试。然后你可以添加一个测试标签或其他东西,比如gotest-v-cover-tagstest主要看起来像://+build!testpackagemainfuncmain(){//dostuff}funcusage(){//s

testing - 包测试的串行执行

我已经为WebAPI实现了几个包,每个包都有自己的测试用例。当使用gotest./api/pkgname测试每个包时,测试通过。如果我想用gotest./api/...一次运行所有测试,测试用例总是失败。在每个测试用例中,我使用DROPSCHEMApublicCASCADE和CREATESCHEMApublic重新创建整个架构并应用所有迁移。测试套件随机报告错误,说关系/表不存在,所以我猜每个测试套件(每个包)以某种方式并行运行,从而弄乱了数据库状态。我试图传递一些测试标志,例如gotest-cpu1-parallel0./src/api/...没有成功。这里的问题可能是并行运行的测试

testing - 包测试的串行执行

我已经为WebAPI实现了几个包,每个包都有自己的测试用例。当使用gotest./api/pkgname测试每个包时,测试通过。如果我想用gotest./api/...一次运行所有测试,测试用例总是失败。在每个测试用例中,我使用DROPSCHEMApublicCASCADE和CREATESCHEMApublic重新创建整个架构并应用所有迁移。测试套件随机报告错误,说关系/表不存在,所以我猜每个测试套件(每个包)以某种方式并行运行,从而弄乱了数据库状态。我试图传递一些测试标志,例如gotest-cpu1-parallel0./src/api/...没有成功。这里的问题可能是并行运行的测试

testing - 如何在 Go 中测试 os.exit 场景

鉴于此代码funcdoomed(){os.Exit(1)}如何正确测试调用此函数是否会导致使用gotest退出?这需要在一组测试中发生,换句话说,os.Exit()调用不会影响其他测试,应该被捕获。 最佳答案 有一个presentation由AndrewGerrand(Go团队的核心成员之一)在其中展示了如何做到这一点。给定一个函数(在main.go中)packagemainimport("fmt""os")funcCrasher(){fmt.Println("Goingdowninflames!")os.Exit(1)}下面是测试