草庐IT

UNIT_TEST

全部标签

unit-testing - 如何为测试目的重新定义/模拟 Go 中的方法?

我正在为Go库创建测试。我发现了一个错误:cannotassignto我有以下代码(https://play.golang.org/p/kf0gANb-p-):packagemainimport("bytes""fmt""os/exec""strconv""strings")const(CONSOLE="dialog"KDE="kdialog"GTK="gtkdialog"X="Xdialog"DIALOG_TEST_ENV="test_env"AUTO="auto")const(DIALOG_ERR_CANCEL="exitstatus1"DIALOG_ERR_HELP="exits

unit-testing - 如何用reflect测试方法?

我有一个Sync()方法可以覆盖在环境中设置的Config字段值。环境变量名称是通过下划线和大写名称从配置字段派生的。例如。AppName会有一个对应的环境变量APP_NAME请帮我测试以下情况。有复杂的东西,比如https://golang.org/pkg/reflect/#Value.Set:Setassignsxtothevaluev.ItpanicsifCanSetreturnsfalse.AsinGo,x'svaluemustbeassignabletov'stype.所以我不知道如何测试这个案例?import("encoding/json""errors""fmt""os"

unit-testing - go 模板的示例测试因导入和未使用 : "testing" 而失败

据我所知,我正在完美地遵循“进行测试”所需的结构。我没有发现与我可以在其他包中运行的测试有差异。“去build”工作正常。我得到了./HelloTemplate_test.go:3:importedandnotused:"testing"./HelloTemplate_test.go:5:undefined:TestinginTesting.T我错过了什么?HelloTemplate.gopackagetemplateprintimport"testing"funcTestRunTempl(t*Testing.T){sweaters:=Inventory{"wool",17}tmpl:

image-processing - 如何让 golang 读取 jpeg 并获得与 Python/C 相同的 unit8 值?

我有一个用于某些图像处理代码的测试jpeg&我正在尝试获取与python中的opencv和Python中的C和Pillow(通过scipy)相同的uint8值数组,它们都匹配这些值当我使用gimp打开jpeg时,我得到了。我尝试将颜色值移动8位,但这并不能准确地转换值-看起来有一些我不太明白的舍入。我知道gimp和opencv以及Pillow/scipy都使用libjpeg,所以我尝试使用https://github.com/pixiv/go-libjpeg并使用将图像转换为8位funcConvert(imgimage.Image)*image.RGBA{b:=img.Bounds()

unit-testing - golang 中的单元测试

我目前正在考虑在Go中为我的服务创建一些单元测试,以及在该功能之上构建的其他功能,我想知道在Go中进行单元测试的最佳方法是什么?我的代码如下所示:typeBBPeripheralstruct{client*http.Clientendpointstring}typeBBQuerystruct{Namestring`json:"name"`}typeBBResponsestruct{Brandstring`json:"brand"`Modelstring`json:"model"`...}typePeripheralstruct{BrandstringModelstring...}typ

go - 为什么我们在 Go 中的 foo() 中有一个独立的 test() ?

为什么下面代码中的test()函数是这样组织的,而不是将test()中的所有内容都取出来放入foo()中?谢谢!funcfoo()error{...err=test()error{......}...} 最佳答案 您可能需要这样的内部函数有多种原因,但到目前为止,最常见的用途是当您需要在内部函数中使用包含函数的局部变量时。为什么要有一个内部函数?有时您需要它传递到库中,或者您需要它用于go或defer语句。内部函数“关闭”它使用的任何来自外部函数的变量,即使在外部函数返回后这些变量仍然有效。因此,以这种方式定义的函数称为“闭包”。一

unit-testing - assert_called_once() 或 assert_called_xyz().... 等效?

能够断言在我的测试中调用了多少次伪造/模拟方法对我来说很重要,我想知道在不使用testify之类的情况下执行此操作的最佳方法是什么。在我的例子中,对模拟方法的调用是一些递归调用的结果。假设我对各种动物进行了表驱动测试,我想断言Hello实际上是为某些测试调用的,但不是为其他测试调用的。在某些情况下,对于给定的测试(遍历一个slice)应该多次调用它。在我的表驱动测试中只添加一个计数器并对其进行断言是否合适?在我看来,也许有更好的方法可以做到这一点。如果我确实在hello方法中添加了一个计数器...应该在哪里处理和检查它。在假方法本身还是在测试等中?typefakeFarmService

unit-testing - 让 'go test -run <case>' 成功为 'go test' 的一般规则是什么?

我发现'gotest'PASS,但是如果我指定subtest,它会失败,这里我给一个全局变量sample,'gotest'会PASS,'gotest-runf/sample2'会失败.我想知道我应该遵循什么一般规则来防止此类问题?走吧packagemainimport"fmt"vargstringfuncf(sstring)string{g=g+sreturns+g}funcmain(){fmt.Println(f("a"))}t_test.gopackagemainimport("testing")funcTest_f(t*testing.T){tests:=[]struct{nam

unit-testing - 如何使用结构/接口(interface)来模拟依赖项以进行测试

我是新手...我的目标是单元测试我的ready()中的状态是否正在更新。我一直在看https://engineering.aircto.com/writing-testable-code-in-golang/并尝试找出如何使他们正在做的事情适应我的用例,尽可能填补golang知识的空白。我收到错误消息cannotusefakeSession(type*FakeSession)astype*discordgo.Sessioninargumenttoready但我不确定为什么我'我收到此错误。ma​​in.goimport("fmt""os""os/signal""syscall""git

go test 仅在测试完成后打印输出

我注意到gotest似乎在测试完成后打印到标准输出。我不确定这是gotest的问题,还是因为我正在使用ginkgo以及。有谁知道如何让它在测试运行时打印输出? 最佳答案 在gotest上使用verbose标志以在测试运行时查看日志或打印语句的输出。gotest-v 关于gotest仅在测试完成后打印输出,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/47535538/