10

他の誰かが統合テストを単なる特別な単体テストと見なしているのではないかと思っていました。ただし、他のプログラマーから、単体テストと統合テストを分離することをお勧めします。なぜこれが良いアイデアなのか誰かが説明できるかどうか疑問に思っていました。統合テストと単体テストをまったく別のものとして扱うことには、どのような利点がありますか? たとえば、統合テストと単体テスト用に別々のフォルダーとパッケージを見てきました。単体テストと統合テストは基本的に同じ概念であるため、両方を含む単一のテスト パッケージで十分であるという意見があります。

4

4 に答える 4

8

以下の理由で違うと思います。

  • 単体テストは、開発者の環境の単一のクラス/モジュールで実行できます。
  • 統合テストは、実際の実稼働セットアップに似た環境で実行する必要があります。

単体テストは意図的に「軽量」に保たれているため、開発者は最小限のコストで必要な頻度で単体テストを実行できます。

于 2009-01-02T13:58:45.600 に答える
8

速度が主な理由です。できるだけ頻繁に単体テストを実行できるように、単体テストをできるだけ高速にする必要があります。引き続き統合テストを実行する必要がありますが、チェックイン前に一度実行するだけで十分です。単体テスト スイートは、より頻繁に実行する必要があります。理想的には、すべてのリファクタリングで実行します。

私は、単体テストと統合テストが完全に混在する約 15,000 の junit テストがある環境で働いています。完全なスイートの実行には約 30 分かかります。開発者はそれを実行することを避け、必要以上に後で間違いを見つけます。テストのサブセットのみを実行した後にチェックインし、継続的なビルドを中断するバグが含まれていることがあります。

早い段階でテストの分離を開始します。スイートが大きいと非常に困難です。

于 2009-01-02T14:55:21.477 に答える
3

「単体テスト」の概念をクラスレベルのスコープに制限する場合は、はい、それらを分離してください

ただし、関連する最小のテスト可能なユニットを機能として定義すると、「ユニット」テストの一部は技術的には「統合」テストになります。

ただし、用語のさまざまな定義/解釈の再ハッシュはほとんど関係ありませんが、テストスイートのパーティション化は、テストするコンポーネントの範囲とテストの実行に必要な時間の関数である必要があります。

たとえば、すべてのテスト(ユニット、統合、回帰など)が単一のアセンブリに適用され、数秒で実行される場合は、それらをすべて一緒に保持します。ただし、一部のテストでサブネット上に6台のクリーンインストールマシンが必要であり、他のテストでは必要ない場合は、最初のテストセットを後者から分離するのが理にかなっています。

要約:「ユニット」テストと「統合」テストの区別は関係ありません。運用範囲に基づくパッケージテストスイート

于 2009-01-02T21:06:53.520 に答える
3

うん。通常、単体テストはクラスレベルでスコープが設定されるため、モックオブジェクトとともに環境に存在します。一方、統合テストは、実際のアセンブリタイプへの参照を保持することにより、すべてのトリックを実行します。

ユニットと統合の両方を1つのプロジェクトに編成する方法がわかりません。

于 2009-01-02T14:05:06.977 に答える