如何解决如何从 go 项目根文件夹运行测试?
我正在阅读 Thorsten Ball 撰写的“Writing an Interpreter in Go”一文,以了解该语言。
项目目录如下所示:
Interpreter/
|---code/
| |---token/
| | |---token.go
| | |---go.mod
| |---lexer/
| |---lexer_test.go
| |---go.mod
|---go.mod
我以这种方式创建了 go.mod 文件
>go mod init monkey
>cd token
>go mod init token
>cd ../lexer
>go mod init lexer
我将此行添加到词法分析器模块中的 go.mod 文件
replace monkey/token => ../token
在 lexer 文件夹中运行 go test
时,我得到了书中提到的预期输出,但我意识到这并不是项目设置正确的指标。
>go test
# lexer [lexer.test]
./lexer_test.go:26:7: undefined: New
FAIL lexer [build failed]
但是在运行书中提到的测试时,即从根文件夹 code 以下列方式:
go test ./lexer
go 无法解析词法分析器包,我收到以下错误
main module (monkey) does not contain package monkey/lexer
是否需要将某些内容添加到根文件夹中的 go.mod 文件中以解决此问题?
解决方法
正如@mkopriva 所指出的,简单的解决方案是从 go.mod
和 token
目录中删除 lexer
文件。
一般来说,Go 项目在项目根目录下应该有一个 go.mod
文件:每个 go.mod
文件表示一个自包含模块。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。