草庐IT

test_slice

全部标签

testing - Golang 有 libfaketime 替代品吗?

我想自动化一些测试,在这些测试中我必须操纵系统时间来检查用golang编写的程序的身份验证行为。根据thispost,libfaketime不适用于golang。有没有另一种方法可以实现我想用libfaketime做的事情?这是来自github的libfaketime功能的描述。libfaketimeinterceptsvarioussystemcallsthatprogramsusetoretrievethecurrentdateandtime.Itthenreportsmodified(faked)datesandtimes(asspecifiedbyyou,theuser)tot

unit-testing - Go 中的模拟随机生成器

出于测试目的,我想在Go中模拟随机数。所以我创建了随机界面。在单元测试期间,我返回标识函数,而为了实现,我使用rand包生成一个随机数。这是在Go中模拟随机数的正确方法吗?任何帮助表示赞赏。去Playground:https://play.golang.org/p/bibNnmY2t1g主要内容:packagemainimport("time""math/rand""fmt")funcinit(){rand.Seed(time.Now().UnixNano())}typeRandominterface{Uint(_uint)uint}typerndGeneratorfunc(nuint

具有嵌套结构和关系的 Gorm 和元素 slice

我正在使用gorm与MySQLdriver.我有以下结构...typeCitystruct{IDuintNamestringSlugstringStateIDuint//foreignkey,mustbeusedlikeINNERJOINstateONcity.state_id=state.idState*State}typeStatestruct{IDuintNamestringSlugstring}这是简单的一对一关系(每个城市属于一个州)使用原始SQL,我使用以下代码将所有城市提取到[]City中:rows,err:=db.Query(`SELECTc.id,c.name,c.s

unit-testing - 列出测试但不运行它们

如何在不运行的情况下列出可用于gotest的测试?我想知道存在哪些测试(包括子测试),以便我可以手动选择其中的一个子集以使用稍后的命令运行。我希望像gotest-l或gotest-n这样的东西。 最佳答案 在go1.9中,gotest命令接受一个新的-list标志,该标志将正则表达式作为参数并打印到标准输出任何测试的名称,基准测试或与之匹配的示例,无需运行它们。testflagsdocumentation可以在https://tip.golang.org下找到直到go1.9正式发布。 关

arrays - 这种类型的 golang 字符串 slice 会在底层字节数组中泄漏内存吗?

像buf=buf[n:]这样的golang字符串slice会导致底层字节数组内存泄漏吗?如果是这样,是否有可能获取有关底层字节数组的任何信息(如容量或基本内存地址),以验证泄漏?请看下面的示例代码:varbufstringfuncpush(sstring){buf+=siflen(buf)>3{buf=buf[len(buf)-3:]//canthislineleakmemoryinunderlyingbytearray?}fmt.Printf("buf=[%v]\n",buf)}Runitonplayground 最佳答案 不,这

go - 像 [0 :2] 这样的 slice 声明

我不明白Go中的slice声明。对于我来说,数组的第一个和第二个元素的声明必须是0:1。但它是0:2。为什么?我应该如何从零读到2减1(始终)?varslice=array[0:2] 最佳答案 slice边界是halfopen,这对于许多编程语言来说是非常标准的。一个优点是它使范围的长度变得明显(2-0=2)。具体来说,这样做很常见:s[start:start+len]很明显,这会从slice中选择len个元素,从start开始。如果范围完全闭合(包括两个边界),代码中必须有很多-1来处理slice和子slice。它在C++范围和P

testing - golang中如何测试并发和锁?

我们正在尝试测试锁。基本上,有多个客户端试图获得对特定key的锁定。在下面的示例中,我们使用了键“x”。我不知道如何测试锁定是否有效。我只能阅读日志以确定它是否正常工作。正确的事件顺序应该是:client1获得key“x”的锁client2尝试获取键“x”上的锁(fmt.Println("2gettinglock"))-但被阻止并等待client1释放对键“x”的锁定client2获得key“x”的锁问题1:如何使流程自动化并将其转化为测试?问题2:测试并发/互斥锁定的一般技巧有哪些?funcTestLockUnlock(t*testing.T){client1,err:=NewCli

python - 从 Go 中的 Python 项目加载数据存储实体会导致嵌套结构 slice 错误

出于性能原因,我正在使用Go在我的GoogleAppEngine项目中编写一个模块,但需要能够读取我在数据存储区中的一些实体。我编写了Go代码以便能够读取我在Python中构建的实体,但出现以下错误:数据存储:展平嵌套结构导致sliceslice:字段“消息”Python中的模型定义:classModelB(ndb.Model):msg_id=ndb.StringProperty(indexed=False)cat_ids=ndb.StringProperty(repeated=True,indexed=False)list_ids=ndb.StringProperty(repeate

arrays - 有没有更好的方法来处理可变大小的 slice ?

请看下面的代码names:=make([]string,0,100)names=append(names,"Jack")names=append(names,"Jacob")//addingmanynamesinhere鉴于这样的情况:我将从其他地方获取这些名称,在此之前我不知道它的大小。所以我需要一个动态数组来包含这些名称。上面的代码是我想出的方法。我想知道是否有更优雅的方法来做到这一点。如果我这样初始化names:=make([]string,100,200)//thenIuseappendinhere//Iwouldgetfirst100elementsasempty,theap

unit-testing - 在 Golang 子进程测试中使用命令行标志时如何生成单元测试覆盖率?

我对大部分代码进行了单元测试。但是我无法弄清楚如何为main包中的main()中的某些代码生成单元测试覆盖率。主要功能非常简单。它基本上是一个选择block。它读取标志,然后调用另一个函数/执行某些操作,或者只是在屏幕上打印帮助。但是,如果命令行选项设置不正确,它将退出并显示各种错误代码。因此,需要进行子流程测试。我尝试了子流程测试技术,但修改了代码,使其包含覆盖标志:cmd:=exec.Command(os.Args[0],"-test.run=TestMain-test.coverprofile=/vagrant/ucover/coverage2.out")这里是原始代码:http