ここでは流れに逆らって、テスト用にまったく別のプロジェクトをセットアップすることを提案します。一貫性があり、ある程度扱いやすいものである限り、一般的に、テストをどこに置くかは問題ではないと思います。しかし、私には、テスト用に別のプロジェクトを用意する理由が 3 つあります。
関心事の分離。まず、ライブラリには 1 つの目的があり、テストには別の目的があります。テストが機能するにはライブラリが必要ですが、ライブラリはテストに実際には使用されません。テストが役に立たないと言っているわけではないことに注意してください。テストはライブラリの正常性を確認するためにありますが、実稼働環境ではテストは何の役にも立ちません。
肥大化が少なく、ファイルが小さくなります。テストは必ずしも簡単ではありません。しかし、それらがすべてあったとしても、まだディスク容量を使用しています。いずれにせよ、テストは本番環境では使用されないため、これは無意味です。また、テストを新しいプロジェクトに分割すると、ファイル構造がよりきれいになります。
一般に、CI 環境は、テストが行われていない場合にセットアップするのが簡単です。
少なくともコンパイラ ディレクティブで 2 番目の問題を解決できる可能性は確かにありますが、この 2 つを分離する方がはるかに簡単な場合は不要な作業です。テスト プロジェクトが名前空間をミラーリングする可能性があるため、同じ名前空間 (内部クラスの誰か?) を使用する必要がある可能性があるライブラリまたはアプリケーションをテストすることも問題ではありません。明らかに、これにより名前空間で名前の衝突が発生しないようにする必要がありますが、それは些細なことです。
Flash Builder のサポートに関しては、物事を 2 つのプロジェクトに分けることは素晴らしいことです。新しいテストを作成するために必要なのは、テストしたいクラスを右クリックし、新しいテストを作成するように依頼し、ポップアップするダイアログで現在のプロジェクトではなく、テスト プロジェクトを選択することです。これこそが、私とチーム メンバーが TDD を始めたときにテストを書くことを正当化するのに苦労した主な理由です。現在の IDE の状態では、非常にシンプルで便利です。
ただし、他の手法と同様に、注意事項があります。1 つには、ドキュメント化されていない限り、テストが別のプロジェクトにあることは明らかではありません。テストを同じプロジェクトに置くことで、その問題を効果的に分類できます。一方、これは、環境にある可能性のあるmavenまたはその他の依存関係管理ツールを構成することで簡単に解決できます. もう 1 つの問題は、ライブラリまたはアプリケーションのパッケージ構造をミラーリングするテスト プロジェクトにパッケージ構造がある場合、それらの構造を同期させるためにメンテナンス オーバーヘッドが発生することです。大きな問題ではなく、スクリプトを使用して簡単に解決できますが、言及する価値はあります。
とにかく、それは私がそれを行う方法です。