草庐IT

test_channel

全部标签

testing - 为什么 GoConvey 测试失败并显示错误代码 0?

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭4年前。Improvethisquestion我需要在构建过程中运行GoConvey测试我如何确保gotest以错误退出代码(非0)退出?

testing - 在非主程序包中运行类似主程序的程序

我们有一个包含大量复杂测试的包。作为测试套件的一部分,它们在构建等上运行。funcTestFunc(t*testing.T){//lotsofsetupstuffanddefiningsuccessconditionsresult:=SystemModel.Run()}现在,对于其中一个测试,我想介绍某种前端,它可以让我调试一些东西。它不是真正的测试,而是调试工具。为此,我只想运行相同的测试,但使用Builder模式:funcTestFuncWithFrontend(t*testing.T){//lotsofsetupstuffanddefiningsuccessconditionsr

Go test <function> 返回 undefined : <function>

尝试运行“gotestsum_test.go”返回错误:./sum_test.go:18:13:未定义:SumInt8FAIL命令行参数[构建失败]我正在学习golang入门类(class)。我们的老师分发了一个代码文件sum.go和一个测试文件sum_test.go。尝试在sum_test.go上运行“gotest”会返回上述错误。代码在我们老师的mac上运行良好,但他在重现问题时遇到了困难。这是我的环境设置:https://pastebin.com/HcuNVcAF求和packagesumfuncSumInt8(a,bint8)int8{returna+b}funcSumFloat

unit-testing - 如何测试 bytes.ErrTooLarge panic 错误

我想在bytes.Buffer.Write方法上模拟bytes.ErrTooLargepanic错误并测试panic处理。我试图写入无限量的数据以超过内存,但随后整个测试崩溃了。还有哪些选择? 最佳答案 听起来像是模拟对象的工作。在测试期间使用此(badBuffer)代替bytes.Buffer。typebadBufferbytes.Bufferfunc(b*badBuffer)Write(p[]byte)(nint,errerror){panic(bytes.ErrTooLarge)}

go - golang 中的无类型 channel

我正在编写一些包,其中channel仅用于中断某些进程,因此它从不读取任何值,只是检测到它需要停止,如下所示:funcmyfunc(stop_chanchan/*bool*/){for{//dosomethingtimeconsuming//....//checkonchannelselect{case稍后我希望这个函数能够接受任何类型的channel。这可能吗? 最佳答案 Iwishthisfunctiontoacceptanytypeofchannel.Isthatpossible?不,这是不可能的。Go中没有未类型化的chan

go - 为什么 channel 没有成为结构的成员

代码:https://play.golang.org/p/Oh3oTa7GIPXtypeastruct{cchanbool}func(a*a)do(){a.c上面的实际输出是bcDone!预期输出:bcbacDone!我不明白为什么它不打印bac?代码是不言自明的,如果还需要更多细节请询问 最佳答案 你的maingoroutine在b.c上发送一个值,然后等待:b.c您从main启动的goroutine:gob.s()这是从b.c收到的,也来自b.a.c:func(b*b)s(){for{select{case如果从b.c收到一个值

go - 在 golang 中如何测试 map 或 channel 未初始化

varmmap[int]intvarcchanint如何用make测试m和c是否未初​​始化 最佳答案 您可以将这些值与nil进行比较,以查看它们是否已初始化。例如:varmmap[int]intvarcchanintfmt.Println("ismuninitialized:",m==nil)//truefmt.Println("iscuninitialized:",c==nil)//truem=make(map[int]int)c=make(chanint)fmt.Println("ismuninitialized:",m==n

go - 选择仅从一个 channel 打印输出

我正在学习Go,现在正在上channel。我用channel写了一个简单的程序。我创建了两个channel,channel被传递给一个被同时调用的函数。我的期望是从两个channel打印输出,但实际上只有一个channel输出被打印:packagemainimport"fmt"funcsquare(datint,chchan在每次执行期间打印来自resp1的消息或来自resp2的消息。channel应该阻塞,直到有东西被插入其中,对吗? 最佳答案 TheGoProgrammingLanguageSpecificationSelect

go - golang channel 是基于 LIFO 的吗?

这个问题在这里已经有了答案:IsthereanywaytomakeGo'schannelsbehavelikeastack(1个回答)关闭4年前。我想知道golangchannel中元素的顺序。运行几个例子后,似乎元素从channel中出来的顺序是“后进先出”。我说得对吗?以下代码段是我使用的示例。运行代码后,输出为2010,其中10先发送到channel,最后发送20。packagemainimport"fmt"funcmultiply(cchanint,numint){c

go - 创建 channel 时新建 vs 制作

这个问题在这里已经有了答案:WhywouldImake()ornew()?(10个答案)关闭4年前。在Go中,我阅读文档并了解make和new之间的基本区别新:返回一个指针(*T)并将它指向的值归零make:返回类型T我阅读了文档,主要是使用数组的示例。创建数组时,我了解new与make的区别。但是我不明白创建channel时的区别:c1:=new(chanstring)c2:=make(chanstring)除了c1的类型为(chan*)而c2的类型为chan之外,真正的区别是什么。谢谢