ワークスペースをきれいに保つために、サブディレクトリとしてパッケージのテストと例を使用して、Go でパッケージを作成したいと考えています。これは可能ですか?
すべてのドキュメントでは、常にテスト コードを他のコードと同じ場所に配置しています。
「再帰的に」実行できることに注意してください。テストするすべてのパッケージをリストする必要があります。go test
Go プロジェクトのルート フォルダーにいる場合は、次のように入力します。
go test ./...
' ./...
' 表記については、「コマンド」の「パッケージ リストの説明」セクションで説明されています。go
インポート パスに 1 つ以上の "
...
" ワイルドカードが含まれている場合、インポート パスはパターンです。各ワイルドカードは、空の文字列やスラッシュを含む文字列を含む任意の文字列と一致できます。
GOPATH
このようなパターンは、パターンに一致する名前を持つツリーで見つかったすべてのパッケージ ディレクトリに展開されます。特殊なケースとして、 はのサブディレクトリと同様に
x/...
一致します。 たとえば、そのサブディレクトリに展開してパッケージ化します。x
x
net/...
net
_test.go
ファイルをサブフォルダーに保存すると、' 'go test ./...
コマンドでファイルを取得できます。
しかし:
そうは言っても、_test.go
ファイルをメインのソース ファイルのすぐ横に置いておくことをお勧めします。見つけやすいからです。
コードと一緒に、"file" という名前のファイルの同じディレクトリにテストを配置しますfile_test.go
。ここで、"file" は、テストするソース コード ファイルの名前です。これは慣習であり、私自身の経験ではそれが最善であることがわかりました.
go test
ツールが十分に自動化されていない場合は、従来の Go テストと GoConvey テスト (動作に基づいており、より自己文書化されている) を自動的に更新して実行する Web UI を備えた GoConvey を調べることができます。従来の Go テストより)。
私は通常テストを行いませんが、ファイルをディレクトリにグループ化し、次のようにインポートを使用できます
import "./models"
が 1 レベル アウトの
import "../models
場合、1 レベル アウトで 1 レベル インの場合
たとえば、次の場合:
./models/todo.go
./test/todo_test.go
todo.go
からテストするtodo_test.go
には、 へのインポートtodo_test.go
は
import "../models"