草庐IT

power_unit

全部标签

unit-testing - 如何轻松找出哪些测试失败

我用gotest./...-v-short测试我的代码。不幸的是,-v只在每个测试发生时打印出来,但不会像Java那样在底部留下结果摘要。这意味着如果顶部某处有任何测试失败,我必须向上滚动并查找单词FAIL或在文本编辑器中搜索它。-failfast标志也无济于事,因为出于某种原因,我的一些测试在第一次测试失败后仍会打印出来。我真的不在乎测试是否在初始测试失败后运行。我只想能够轻松判断任何测试是否失败,最好只在一个地方(例如,有多少测试通过或失败的摘要,或者通过查看标志所有测试是否通过)。有没有一种方法可以轻松判断是否存在测试失败,因为我不想在仍然有测试失败的情况下不小心继续编码。我使用

unit-testing - 以预定义的顺序执行测试用例

有没有一种方法可以按照预定义的顺序在GoLang中执行测试用例。P.S:我正在为事件的生命周期编写测试用例。所以我对所有CURD操作都有不同的api。我想以特定顺序运行这些测试用例,因为只有在创建事件时才可以将其销毁。我还可以从一个测试用例中获取一些值并将其作为输入传递给另一个测试用例。(示例:-要测试删除事件api,我需要一个event_id,它是我在调用create_event测试用例时获得的)我是GoLang的新手,有人可以指导我吗。提前致谢 最佳答案 唯一的方法是将所有测试封装到一个测试函数中,以正确的顺序和正确的上下文调用

unit-testing - Go Test 中具有不同条件的多个 httptest.NewRequest

我对Golang还是个新手。你对如何在你的Go测试文件中有效地创建多个httptest.NewRequest有什么想法吗?通常我发起一个新变量两个创建新请求。例如:r1:=httptest.NewRequest("GET",url,nil)r1.Header.Add("Accept-Language","id")r1.AddCookie(&cookie)r2:=httptest.NewRequest("GET",url,nil)r1.Header.Add("Accept-Language","id")所以我想创建2个不同的请求,实际上我必须启动2个变量才能生成新请求。我还使用了测试表,

unit-testing - Golang 中的编码/解码时间对象意外失败

解码编码的时间对象失败,因为有几个字符测试声明如下://valuesnow:=time.Now()timeToJSON,_:=json.Marshal(now)varobjtime.Timejson.Unmarshal(timeToJSON,&obj)然后做如下测试逻辑:if!assert.Equal(t,now.String(),obj.String()){t.FailNow()}预期要通过的测试,并且两个对象要相等实际失败了:---FAIL:TestFromJSON(0.00s)D:\dev2017\GO\src\ezsoft\apiserver_sdk\model\delete\

unit-testing - 如何测试 ioutil.ReadFile 和 os.Stat?

我有以下功能:funcGetDataFromFile(pathstring)([]byte,error){_,err:=os.Stat(path)iferr!=nil{returnnil,err}data,err:=ioutil.ReadFile(path)iferr!=nil{returnnil,err}returndata,nil}我想在函数ioutil.ReadFile和os.Stat(path)抛出错误时对其进行测试。我知道我可以为os.Stat(path)创建不存在的路径,但是如何在没有“解决方法”和猜测函数工作方式的情况下测试此类函数?问候。 最

unit-testing - 是否可以对我的包不导入特定包进行单元测试?

我想确保我的Go包使用“dal”包提供的var实例,并且不会意外地直接导入和使用数据库访问包。我想我可以在源代码上进行正则表达式搜索,但我想知道是否有办法通过标准Go测试来确保规则?只是想知道我要做什么:接口(interface)包:packagedaltypeUserDalinterface{GetUser(idint)User}实现包:packagedal_db_specificimport("some_db""dal")typeUserDalDbSpecificstruct{}func(_UserDalDbSpecific)GetUser(idint)User{some_db.e

unit-testing - 真正的单元测试总是可以并行运行吗?

背景:我正在编写大量go代码,使用gotest工具和提供的"testing"包进行测试。我所做的大部分测试都是TDD规程中的单元测试。这些被测试的“单元”永远不允许依赖于有状态的外部性,如持久存储、网络跃点等,但通常在“构造函数/构建器”函数中接收这些外部性的虚假内存实现(是的,我知道它们不是传统意义上的构造函数)。问题:gotest工具总是以相同的确定顺序运行测试函数,这一直困扰着我。在某些情况下,这允许竞争条件隐藏在代码中。找到这些错误的一种方法是设置-race标志。另一个可能是始终并行运行单元测试......问题:是否存在曾经孤立单元测试不能或不应该总是并行运行的情况(使用-并行

unit-testing - os.FileInfo 模拟不匹配

在我的一个golang项目中,我为测试用例模拟了os.FileInfo。我不确定我是否正确理解了golang的接口(interface)处理。据我所知,以下代码应该可以工作,但我收到一个编译器错误,指出接口(interface)不匹配。我修改了thisgo-doc示例,以防您想自己测试一下。packagemainimport("fmt""io/ioutil""log")typefileinterface{Name()string}funcreadFiles()[]file{files,err:=ioutil.ReadDir(".")iferr!=nil{log.Fatal(err)}r

unit-testing - 处理程序单元测试的模拟功能

我被模拟测试困住了,这是我的处理程序路线:r.Handle("/users/{userID}",negroni.New(negroni.HandlerFunc(validateTokenMiddleware),negroni.Wrap(http.HandlerFunc(func(whttp.ResponseWriter,r*http.Request){getUserDetailsHandler(w,r,db)})),)).Methods("GET")这是我的处理程序:funcgetUserDetailsHandler(whttp.ResponseWriter,r*http.Reques

unit-testing - 为从中读取的函数填充 os.Stdin

如何在我的测试中填充os.Stdin以获取使用扫描仪从中读取的函数?我使用以下函数通过扫描器请求用户命令行输入:funcuserInput()error{scanner:=bufio.NewScanner(os.Stdin)println("Whatisyourname?")scanner.Scan()username=scanner.Text()/*...*/}现在如何测试这种情况并模拟用户输入?以下示例不起作用。标准输入仍然是空的。funcTestUserInput(t*testing.T){varfile*os.Filefile.Write([]byte("Tom"))os.St