Go build error: no non-test Go files in <dir>

泪湿孤枕 提交于 2020-07-20 11:24:42

问题


Getting an error when trying to run go build ./... from my $GOPATH/src .

no non-test Go files in <dir>

The error is correct there are no test files in <dir> but why is that causing a compile error? Is it a bug?


回答1:


I don't think this is a bug, unless you see somewhere in the docs that contradicts this behaviour you should probably close the issue you've created.

Tests in go normally live in the package they are testing. You have made a new package with package main at the top (invalid if you also have main elsewhere), and then have included no go source files in that tests/main package (invalid as package has no go source files apart from tests, which the compiler complains about explicitly).

Possible solutions for you (assuming this isn't just a hypothetical question):

  • Move tests for main to test_main.go (this is what readers will expect)
  • Add doc.go file to your tests pkg and call it package tests in both files

The reason for putting tests in the same package is to ensure they have access to the entire package, if you want to split them to another package you'll find you have to test as an external user of the pkg - this may be painful. Main is also a special case as well as you don't normally import it.




回答2:


Calling it a bug… the build shouldn't fail if the tests compile. Filed here: https://github.com/golang/go/issues/22409

The bug I filed was a duplicate of https://github.com/golang/go/issues/8279 looks like it was broken in 1.3.




回答3:


First, check your $GOPATH has been set correctly. Learn more at here.

Then, check if any '_' in your file name. Remove these '_'s and try again. ;-)



来源:https://stackoverflow.com/questions/46899112/go-build-error-no-non-test-go-files-in-dir

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!