草庐IT

springboot单元测试

全部标签

unit-testing - 为期望按下的键继续的函数编写 Golang 单元测试

我在Golang中有一个这样的函数:funcExit(codeint){.........keyboard.Open()deferkeyboard.Close()keyboard.GetKey()PrintAndLogInfo("\nBye.")os.Exit(code)}我正在使用以下库来使用此键盘功能github.com/eiannone/keyboard我想为此功能编写单元测试。但是,keyboard.GetKey()需要按下一个键。也许正因为如此,当我运行调用函数Exit的测试时,它失败并显示错误:panic:函数GetKey()应该在Open()之后调用[已恢复]panic:

api - 如何从 "test"包测试 Golang 中的主包?

我有一个用Golang编写的简单程序。它是一个API。所以在项目文件夹中,有一个名为cmd的文件夹,其中包含我的main包(用于初始化应用程序并定义API的端点)。还有一个以我的程序命名的文件夹,其中包含同样以我的程序命名的包中的多个文件。这个包作为执行所有必要查询的模型,并包含我定义的所有类型。我还创建了一个名为test的文件夹。它包含名为test的包下的所有测试文件。问题是要运行测试,我必须访问我的主包!有没有办法在Golang中做到这一点?我尝试简单地使用import"cmd/main"但当然它不起作用。我也有一个想法。也许我可以将所有初始化函数(在cmd文件夹中)移动到以我的程

go - 通过简单的乒乓测试对 channel 进行基准测试

我有一个简单的2文件go应用程序。我正在尝试对2个channel上的ping和pong消息进行基准测试。目标是运行基准测试以查看可以完成多少来回ping和pong(这就是为什么我要通过这些尝试,以便基准测试可以在不同的输入下继续运行)出于某种原因,它只在我运行时才在本地显示:gobuild./main输出:pingpongpingpongpingpongpingpongping为什么迭代这么少就结束了?主.gopackagemainimport("fmt")funcmain(){PingPong(1000)varinputstringfmt.Scanln(input)fmt.Print

unit-testing - 如何测试/重构测试调用 http.ListenAndServe 的函数

我正在学习go并且正在开发一个简单的服务,该服务从队列中提取一些数据并将其保存在数据库中。它还运行一个网络服务器以允许抓取数据。现在我有两个go文件(为简洁起见省略了一些文本):funcmain(){parseConfig()s:=&Service{ServiceConfig:config}err:=s.Run()iferr!=nil{panic(err)}}然后是服务的定义(为简洁起见,再次省略了一些部分):func(s*Service)Run()error{iferr:=s.validate();err!=nil{returnerr}iferr:=s.initDB();err!=n

unit-testing - Uber Cadence 事件的单元测试上下文

我正在为使用UUID从联系人服务检索联系人的节奏事件功能编写单元测试。我想知道我应该将什么上下文传递给节奏事件。activity.Register(GetContactActivityFunc)funcGetContactActivityFunc(ctxcontext.Context,inputContactBbInput)(ContactBbOutput,error){...}这是测试函数。funcTestGetContactActivityFunc(t*testing.T){mockCSInterface:=&mocks.Interface{}csClient:=outbound.

go - 是否使用闭包?这是编写此测试函数的更好方法

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭3年前。Improvethisquestion我不确定我是否正确命名了问题,如果我不正确,我愿意修改。我有这样的测试:funcTestMyStruct(t*testing.T){tests:=[]struct{testcasestringsetupfunc()}{testcase:"test1",setup:func(){//ifsetupfail,callt.Fatal()t.Fatal()},}for_,test:=rangete

go - 如何构建程序作为测试的一部分

我想测试一个函数callProgram执行二进制文件并正确处理输出。为此,我最初的想法是像这样编译原始代码:packagemytestimport("testing")const(binary_code=`packagemainfuncmain(){//Gloriousprocessing...}`)funcTestCall(t*testing.T){p:=buildTestProgram(binary_code,"~/testbinary")deferp.Delete()callProgram("~/testbinary")}我查看了build命令(runBuild),它的实现非常简

go - 如何在 go 中对 gRPC 服务进行单元测试

我在对gRPC服务进行单元测试时遇到困难。我看了TestingagRPCservice但它对我不起作用,不确定我做错了什么。Add方法的gRPC服务实现:typeserverstruct{}funcmain(){listener,err:=net.Listen("tcp",":4040")iferr!=nil{panic(err)}srv:=grpc.NewServer()service.RegisterMathOpServiceServer(srv,&server{})reflection.Register(srv)ife:=srv.Serve(listener);e!=nil{pa

go - 如何在 go 中测试验证 JWT 路由

我想在JWT身份验证中测试protected路由。已经尝试接收响应并尝试传递token,但它只返回401作为代码响应。packageroutesimport("fmt""github.com/stretchr/testify/assert""net/http""net/http/httptest""testing")funcperformRequest(rhttp.Handler,method,pathstring,t*testing.T)*httptest.ResponseRecorder{token:="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ey

sql - 删除用于测试套件的所有数据库记录的最佳方法是什么?

我有一个测试套件使用从YAML文件读取的种子污染我的数据库。我想知道是否有一种方法可以在运行测试后清理我的数据库(删除用于测试套件的所有记录)。//OpendbandreturnspointerandcloserfuncfuncprepareMySQLDB(t*testing.T)(db*sql.DB,closerfunc()error){db,err:=sql.Open("mysql","user:pass@/database")iferr!=nil{t.Fatalf("openmysqlconnection:%s",err)}returndb,db.Close}//Pollutem