草庐IT

monkey-testing

全部标签

testing - GO 中的并发编程测试

我正在努力确保我的并发程序没有以下内容,死锁活锁饥饿我找到了以下工具http://blog.golang.org/race-detector我尝试使用启用的-race进行编译和运行,但没有看到任何投诉。有谁知道这是否检查了上述所有问题?在输出中没有收到任何投诉是否意味着该程序没有这些问题? 最佳答案 死锁、活锁和饥饿无法通过单独的测试来消除,Goracedetector也检测不到它们。Go程序中的死锁将在运行时检测到,但通常为时已晚。活锁(非终止的繁忙循环)将不会被检测到,除非它们也导致死锁。线程饥饿类似于活锁,因为应用程序中的不平

testing - 将 t.Parallel() 放在我的测试顶部有什么实际好处?

gotesting包定义了aParallel()function:Parallelsignalsthatthistestistoberuninparallelwith(andonlywith)otherparalleltests.然而,当我搜索为标准库编写的测试时,我发现这个函数的使用很少。我的测试非常快,而且通常不依赖于改变共享状态,所以我一直在添加这个,认为它会导致加速。但它没有在标准库中使用这一事实让我犹豫不决。将t.Parallel()添加到您的测试中有什么实际好处? 最佳答案 Thisthread(其中t.Parallel

go - Go testing.B 基准测试是否可以防止不必要的优化?

我最近开始学习Go,我正在尝试实现一个可以由多个groutines同时使用的映射。我希望能够将我的实现与一个简单的sync.Mutex-protectedmap或类似这样的东西进行比较:https://github.com/streamrail/concurrent-map/blob/master/concurrent_map.go通过使用GoogleCaliper,我假设一种天真的基准测试方法会允许许多不需要的优化破坏实际结果。使用testing.B的基准是否采用了一些技术来避免这种情况(毕竟Go和Caliper都是Google项目)?如果是,他们知道吗?如果不是,在Go中进行微基准

戈朗 : Error while make test: signal: killed

我在Golang项目上运行maketest时遇到此错误:signal:killedFAILmake:***[test]Error1相同的代码在昨天之前运行得非常好。注意:我也尝试在其他分支上进行测试,但结果相同。 最佳答案 2017年4月27日更新:新的Go1.8.1(2017/04/07发布)修复了这个问题。请下载并安装最新版本。旧答案:主要是命令行工具8.3不兼容。根据https://github.com/golang/go/issues/19734的解决方案:首先删除/Library/Developer/CommandLine

unit-testing - 使用 Gomock 测试返回错误 : Expected call has already been called the max number of times

我正在使用Gomockhttps://godoc.org/github.com/golang/mock和模仿这个测试的源代码是:packagesqsimport("fmt""log""os""runtime""github.com/aws/aws-sdk-go/aws/session""github.com/aws/aws-sdk-go/aws""github.com/aws/aws-sdk-go/service/sqs""github.com/aws/aws-sdk-go/service/sqs/sqsiface")varsess*session.Sessionvarsvc*sqs.

testing - 我将如何在 go 中模拟对 ioutil.ReadFile 的调用?

我有以下功能:funcObtainTranslationStringsFile(pathstring)([]string,error){ifcontents,err:=ioutil.ReadFile(path);err!=nil{returnObtainTranslationStrings(string(contents))}else{returnnil,err}}我需要模拟ioutil.ReadFile,但我不确定该怎么做。可能吗? 最佳答案 如果你想模拟这个,有几种方法可以处理这个问题。第一个,也许是最简单的,是改变使用iout

unit-testing - 测试 assert.Equal 除了一个字段

我正在编写用于在数据库中读取/写入结构的测试,其中一个字段是在数据库中自动计算的时间戳。因此,当我编写结构时,它的时间戳为0,但当我从数据库中读取它时,时间戳具有实际值。我想比较这两个值但忽略自动计算的字段。可能吗? 最佳答案 在测试之前设置另一个“except”字段:now:=time.Now()expected:=SomeStruct{ID:123,Name:"Test",Timestamp:now,...}result,_:=db.Select(....)result.Timeestamp=nowif!reflect.Deep

unit-testing - 如何在构建期间运行 mockgen?

我已经开始使用gomock为单元测试创​​建模拟对象。Gomock要求我运行带有特定参数的mockgen命令,以便为模拟生成代码。每次被模拟的接口(interface)发生变化时,都需要再次执行此操作。因此,我认为让gobuild使用适当的参数运行mockgen可能是有意义的。有没有办法让gobuild在构建包之前运行脚本或shell命令?如果没有,您如何生成模拟并使它们保持最新? 最佳答案 我认为gobuild中不存在任何使这成为可能的钩子(Hook)。一种解决方案是使用make。您的Makefile可能类似于:.PHONY:bu

go - 'go build' 和 'go test' 可以有默认标签吗?

具体来说,我正在使用magick包,而我正在使用的功能决定了我总是需要使用“gm”构建标签来构建它。有没有一种方法可以默认声明该构建标记,以便我的项目的“构建”(或“构建测试”)将使用“gm”隐式构建magick? 最佳答案 不,他们不能。您要么必须在cmd行中键入它们,要么使用makefile。 关于go-'gobuild'和'gotest'可以有默认标签吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow

unit-testing - 我如何在单元测试中限制/门内存使用

有没有办法在golang的单元测试期间限制内存使用量/增长量?例如在java中,我们可以这样做:longbefore=Runtime.getRuntime().freeMemory()//allocateabunchofmemorylongafter=Runtime.getRuntime().freeMemory()Assert.AssertTrue(before-after(粗略地)断言我们没有使用超过100个字节。 最佳答案 使用Go基准测试来分析内存使用情况。例如:mem.go:packagememfuncmemUse(){v