Golang测试中如何显示构建错误

Golang测试中如何显示构建错误 在我的项目中:

  • go build 成功执行
  • go test 失败,仅显示 [build failed] 和包名。

我如何才能查看测试文件中的构建错误?或者至少知道错误发生在哪个文件?

目前,我只能打开包中的所有文件,寄希望于 IDE 能为我高亮显示错误。

4 回复

这取决于你的测试框架和构建系统。在大多数情况下,启用详细日志记录(--verbose-v 标志)并配置你的 CI/CD 流水线来捕获构建输出会有所帮助。你使用的是 Jest、Mocha 还是其他测试框架?

更多关于Golang测试中如何显示构建错误的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你能展示每个命令及其输出吗?例如:

~/P/dotconfig (main|✔) $ go build
~/P/dotconfig (main|✔) $ go test
PASS
ok      github.com/DeanPDX/dotconfig    0.147s
~/P/dotconfig (main|✔) $

go build -v 没有输出。 go test 会显示编译错误,但它不会就此停止,它会执行所有测试,这毫无必要地耗费时间,并可能导致数百行关于测试失败的行(这在开发过程中经常发生),而我不想看到这些。 go test -v 更糟糕,因为它还会显示关于测试通过的信息。

我使用标准库 1.24.1 中的 go.testing 进行测试,并使用 stretchr/testify 进行断言。

目前我关心的是本地开发,我不应该提交甚至无法编译的代码,对吧?

在Go测试中查看详细的构建错误,可以使用-x-v标志来获取更多信息。以下是具体方法:

1. 使用 go test -x

这会显示完整的构建命令和输出:

go test -x ./...

2. 使用 go test -v

虽然主要用于显示测试详情,但有时也会显示更多构建信息:

go test -v ./...

3. 使用 go test -work

保留临时工作目录,可以检查构建文件:

go test -work ./...

4. 直接构建测试文件

手动构建测试二进制文件来查看错误:

go test -c -o /tmp/test.bin ./...

5. 检查特定包的测试

# 替换 your/package/path 为实际包路径
go test -x your/package/path

示例场景

假设在 math_test.go 中有语法错误:

package math

import "testing"

func TestAdd(t *testing.T) {
    // 故意制造语法错误:缺少右括号
    result := add(2, 3
    if result != 5 {
        t.Errorf("Expected 5, got %d", result)
    }
}

运行 go test -x ./... 会显示类似输出:

WORK=/tmp/go-build123456789
mkdir -p $WORK/b001/
cd /path/to/your/project
/usr/local/go/pkg/tool/linux_amd64/compile -o $WORK/b001/_pkg_.a -trimpath "$WORK/b001=>" -p math -complete -buildid ... ./math.go ./math_test.go
# math
./math_test.go:7:28: syntax error: unexpected newline, expecting comma or )
FAIL    math [build failed]

6. 使用 go build 测试特定文件

# 构建包含测试文件的包
go build -o /dev/null ./...

这些方法会显示具体的错误信息,包括文件名和行号,帮助你快速定位问题。

回到顶部