パッケージディレクトリ内にreverseTest.goという簡単なテストを作成しています。
package main
import "testing"
func TestReverse(t *testing.T) {
cases := []struct {
in, want string
}{
{"Hello, world", "dlrow ,olleH"},
{"Hello, 世界", "界世 ,olleH"},
{"", ""},
}
for _, c := range cases {
got := Reverse(c.in)
if got != c.want {
t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)
}
}
}
私がそれを実行しようとするたびに、出力は
exampleFolder[no test files]
これは私の行く環境です
GOARCH="AMD64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="AMD64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/juan/go"
GORACE=""
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_AMD64"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CXX="g++"
CGO_ENABLED="1"
どんな助けも大歓迎です。ありがとう!!
テストを含むファイルは、_name_test
_という接尾辞を付けて__test
_と呼ぶ必要があります。 From Goコードの記述方法 :
TestXXX
という署名func (t *testing.T)
という名前の関数を含む__test.go
_で終わる名前のファイルを作成して、テストを作成します。テストフレームワークは、このような各機能を実行します。関数が_t.Error
_や_t.Fail
_などの失敗関数を呼び出す場合、テストは失敗したと見なされます。
ルートパッケージにテストファイルがなく、go test -v
を実行してもサブパッケージはテストされず、ルートパッケージのみがテストされる可能性があります。
例えば
.
├── Dockerfile
├── Makefile
├── README.md
├── auth/
│ ├── jwt.go
│ ├── jwt_test.go
├── main.go
ご覧のとおり、ルートパッケージにはテストファイルはなく、main.goファイルのみがあります。 「テストファイルなし」が表示されます。
解決策は、現在の作業ディレクトリ内のすべてのパッケージを再帰的にテストすることです
go test -v ./...
または govendor を使用する場合
govendor test +local
または、テストするパッケージ(ディレクトリ)を指定できます
go test -v ./packagename
または、パッケージを再帰的にテストします
go test -v ./packagename/...
_testファイル内のテスト関数は、接頭辞「Test」で始まる必要があります
良い:
func TestName (
悪い:
func NameTest (
この関数はテストとして実行されず、報告されたエラーの結果
私は同じ問題に直面しました。以前の回答に加えて、パッケージのフォルダー名がtesting
の場合、テストを実行できないときに問題が見つかります。
以下の問題の端末デモ:
testing
フォルダー名:
~/go/src/testing$ go test
? testing [no test files]
testing
フォルダー名なし:
~/go/src/testing_someothername$ go test
PASS
ok testing_someothername 0.089s
私の場合、それは役に立ちました