2017-11-18 10 views
2

「gopkg.in/yaml.v2」というパッケージをインポートしました。 私もインポートされたパッケージgopkg.in/yaml.v2からその実行ユニットテストビルド時にコマンドgo test -v ./...を実行したときに、これは、ディレクトリ構造の下goユニットテストでは「go get」コマンドからインポートしたパッケージを実行しています

src/ 
    gopkg.in/ 
    yaml.v2 
    main.go 
    abc.go 
    abc_test.go 

です。私の場合は必要ではない。

私はGoとそのテストフレームワークが初めてです。 Googleで答えを検索しましたが、これに固有のものは見つかりませんでしたか?

答えて

4

goツールは、指示するので、すべてのパッケージのテストを実行します。

3ドット...はgoツールの機能であり、指定されたパッケージとそのサブフォルダにあるすべてのパッケージを意味します。それは空の文字列とスラッシュを含む文字列を含む任意の文字列を一致させることができ、それぞれが1つ以上の「...」ワイルドカードを含む場合Command Go: Description of package lists:

インポートパスのドキュメントから引用するパターンです。このようなパターンは、パターンに一致する名前を持つGOPATHツリーにあるすべてのパッケージディレクトリに展開されます。

一般的なパターンをより便利にするために、2つの特殊なケースがあります。まず、パターンの最後にある/ ...は空の文字列と一致するので、net/...はnet/httpなどのサブディレクトリ内のnetとパッケージの両方に一致します。第2に、ワイルドカードを含むスラッシュで区切られたパターン要素は、./vendorまたは./のサブディレクトリ内のパッケージと一致しないように、ベンダードパッケージのパスにある "vendor"要素の一致に決して参加しません。マイコード/ベンダーですが、./vendor/...と./mycode/vendor/... do。ただし、ベンダという名前のディレクトリには、ベンダ名の付いたディレクトリはベンダードパッケージではないことに注意してください。cmd/vendorはvendorというコマンドであり、パターンcmd/...はそれに一致します。 vendoringの詳細については、golang.org/s/go15vendorを参照してください。

独自のパッケージのテストを実行したい場合は、...を追加しないでください。パッケージに移動し、go test .を実行します。または任意のフォルダからgo test your/packageを実行します。

これを行うには(とにかくお勧めします)、コードをパッケージに入れて、$GOPATH/srcフォルダに直接入れないでください。例えば。フォルダ$GOPATH/src/my/exampleに入れてください。その後、go test my/exampleのようにテストできます。

関連する問題