Go运行go test测试deck_test.go提示newDeck未定义构建失败如何解决
问题排查及解决方案
一、指定测试文件运行报newDeck未定义的原因
单独指定测试文件执行go test时,Go测试工具只会编译你传入的测试文件,不会自动加载同目录下的其他业务源码文件,因此找不到定义在其他文件中的newDeck函数,导致构建失败。
如果需要指定文件测试,需要把依赖的业务源码文件一起传入,比如newDeck定义在deck.go中,执行命令改为:
go test -v deck_test.go deck.go
二、不指定文件名执行测试未按预期失败的原因
根据你提供的go env信息,你的项目模块路径为/home/apm/go/cards,出现该异常的核心原因是测试命令没有正确命中你写的测试用例,常见场景如下:
- 执行
go test的工作目录不对:你需要先切换到/home/apm/go/cards目录下再执行测试命令 - 测试文件没有放在当前执行目录下:确认
deck_test.go和定义newDeck的源码文件都在/home/apm/go/cards根目录下
三、验证操作步骤
- 切换到项目根目录:
cd /home/apm/go/cards
- 执行当前目录下所有测试,打印详细日志:
go test -v .
正常情况下你会看到TestNewDeck被执行,且抛出预期的错误提示:Expected deck length of 20 , but got 16(你的newDeck返回的切片长度为4个花色*4个取值=16)。
内容的提问来源于stack exchange,提问作者Arun Mohan
相关产品推荐
相关产品推荐

