web-dev-qa-db-ja.com

テストファイルをソースファイルと同じフォルダーに配置する必要がありますか?

テストするソースファイルのすぐ隣(同じsrcディレクトリ内)にテストファイルを配置する方が簡単ですか、またはミラー階層を持つ別のtestsディレクトリを作成する必要がありますか?

それらを同じフォルダに置くと、メンテナンスに関しては楽になりますが、ソースディレクトリが混雑します。

オプション1:ソースとテスト用に別々のフォルダーがある場合のディレクトリ構造:

- src
+-- item.ts
`-- util
    +-- helper.ts

- test
+-- item.test.ts
`-- util
    `-- helper.test.ts

オプション2:両方のタイプのファイルが同じディレクトリにある場合のディレクトリ構造:

- src
+-- item.ts
+-- item.test.ts
`-- util
    +-- helper.ts
    `-- helper.test.ts

試してみるまでは、いつもオプション1を使っていましたangular-cliとオプション2のようにテストファイルと一緒にコードファイルを生成すると、全体を再考することができました。

27
UghSegment

オプション#2は私が行く方法です。

Angular 2つのコンポーネントについて考えるとき、それらは単一のエンティティであり、複数のファイルで構成されていると見なします。HTML/ CSSファイルを他のディレクトリに移動しないでください。コンポーネント、それでユニットテストを移動するのはなぜですか?

私はVSCodeの小さなユーティリティプラグインを作成しましたが、個人的には非常に便利です。Angular 2コンポーネントをエクスプローラビューの単一のエントリに圧縮し、アイコン/コンテキストメニューオプションを追加してテンプレート/ css /ユニットテストに追加します。これにより、コンポーネントを複数のパーツで構成される単一のユニットとして表示できます。このような方法でディレクトリを「クリーン」に保つことができます。

単体テストは、コードに加えて、コードの一部として考えることをお勧めします。あなたがそれらの上に保つことができるなら、それらは非常に役に立ちます。

12
aaron-bond

私の個人的な推奨事項は、#1を使用することです。理由は次のとおりです。

  1. ソースコードが実際のビジネスロジックに関連しないコードで「汚染」されていない。同じクラス/モジュールに対して複数のテストファイルを持つことはそれほど珍しくありません。
  2. おそらくユニット・テストだけで作成するものはありません。 e2eはどうですか?それらは特定のファイルにそれほど拘束されていないので、対応する「何か」の横に配置されますか?したがって、プロジェクト全体にわたってテストが雑然となるリスクがあります。1つは別の場所に、いくつかは別の場所にあります。専用ディレクトリ内のすべてのテストの分離-この問題を解決します。
  3. プロジェクトのデプロイを準備するのは簡単です。それ以外の場合は、変換されたソースから何らかの方法ですべてのテストを取り除く必要があります。

これに私を信頼しないでください-などの確立されたプロジェクトを見てください

11
Amid