181

ワークスペースをきれいに保つために、サブディレクトリとしてパッケージのテストと例を使用して、Go でパッケージを作成したいと考えています。これは可能ですか?

すべてのドキュメントでは、常にテスト コードを他のコードと同じ場所に配置しています。

4

4 に答える 4

292

「再帰的に」実行できることに注意してください。テストするすべてのパッケージをリストする必要があります。go test

Go プロジェクトのルート フォルダーにいる場合は、次のように入力します。

go test ./...

' ./...' 表記については、「コマンド」の「パッケージ リストの説明」セクションで説明されています。go

インポート パスに 1 つ以上の " ..." ワイルドカードが含まれている場合、インポート パスはパターンです。各ワイルドカードは、空の文字列やスラッシュを含む文字列を含む任意の文字列と一致できます。

GOPATHこのようなパターンは、パターンに一致する名前を持つツリーで見つかったすべてのパッケージ ディレクトリに展開されます。

特殊なケースとして、 はのサブディレクトリと同様にx/...一致します。 たとえば、そのサブディレクトリに展開してパッケージ化します。xx
net/...net


_test.goファイルをサブフォルダーに保存すると、' 'go test ./...コマンドでファイルを取得できます。
しかし:

  • テストファイルがパッケージのエクスポートされたコンテンツにアクセスできるようにするには、エクスポートされた変数と関数 (テストで使用される) の前にパッケージの名前を付ける必要があります。
  • エクスポートされていないコンテンツにはアクセスできません。

そうは言っても、_test.goファイルをメインのソース ファイルのすぐ横に置いておくことをお勧めします。見つけやすいからです。

于 2014-02-12T10:43:55.013 に答える
18

コードと一緒に、"file" という名前のファイルの同じディレクトリにテストを配置しますfile_test.go。ここで、"file" は、テストするソース コード ファイルの名前です。これは慣習であり、私自身の経験ではそれが最善であることがわかりました.

go testツールが十分に自動化されていない場合は、従来の Go テストと GoConvey テスト (動作に基づいており、より自己文書化されている) を自動的に更新して実行する Web UI を備えた GoConvey を調べることができます従来の Go テストより)。

于 2013-10-05T18:32:30.567 に答える
-6

私は通常テストを行いませんが、ファイルをディレクトリにグループ化し、次のようにインポートを使用できます

import "./models"が 1 レベル アウトの
import "../models場合、1 レベル アウトで 1 レベル インの場合

たとえば、次の場合:
./models/todo.go
./test/todo_test.go

todo.goからテストするtodo_test.goには、 へのインポートtodo_test.go

import "../models"

于 2013-10-06T10:43:24.460 に答える