春のプロジェクトにシステムテストを含めるべきですか?
-
14-11-2019 - |
質問
私のSpring Webプロジェクトは次のもので構成されています。
- util classes;
- リポジトリ;
- サービス;
- コントローラ
テストは次のとおりです。
- utilクラスのための単体テスト
- HSQLDBを用いたリポジトリのばね統合テスト。
- モックリポジトリを持つサービスのためのユニットテスト
- モックサービスを備えたコントローラのためのユニットテスト。
プロジェクト全体の機能をテストするシステムテストもあります。それはセレンのような外部ツールで実行することができます、あるいはスプリング統合テストを使用して実行できます。
問題は、プロジェクトにそのようなSpring Integration Systemテストを含めるか、どういうわけか分離されるべきですか?
プロジェクト内のシステムテストを含めることについての2つの問題が見られます。 1.そのようなテストは実稼働コンフィグでは実行されないため、設定チューニングが必要です(たとえば、JNDIからのものではなくローカルデータソースが必要です)。 2.自律的ではない、それらはいくつかの外部資源などが必要です。通常の単体テストとして実行することはできません。
システムテストをどのように整理しますか?
解決
小さなプロジェクトでは、私はそれらを同じ場所に保管していました。大規模なエンタープライズプロジェクト(たとえば、Springを使用する可能性がある種類)では、通常、システムテストを別のパッケージ/プロジェクトにまとめました。これはそれらをメインコードベースとは別に保つのに役立ちます。
これをしない場合は、コードからクラスを再利用するためのあらゆる種類の誘惑があり、システムのユーザーの経験に強く焦点を当てているもので「ヘルプアウト」(ユーザーが別のシステムになる可能性があります。 )。これが起こると、プロジェクトドメインクラスとUIの結合を終えます。これは、Real CodeBaseでそれらを切り離すのに役立つロジックの大部分を複製する必要がある避けられない影響を及ぼします。
システムシナリオのロジックは実際にページ、画面、Webコールなどに焦点を合わせているので、メインプロジェクトからのコードを再利用することは赤のニシンです。この起こっているのを避けるためにパッケージを別々に保ち、あなたがそれを避けたら、同じ場所にそれらを持つ必要はありません。
では、システムテストがコードとして同じバージョンコントロールにチェックインされていることを確認してください。
あなたが継続的な統合とテスト/展開をしていない場合、それはいくつかの学習が設定ファイルをあなたに役立つ別の領域かもしれません。残念ながら別のプロジェクトでテストがあるという理由だけで、その問題は消えません。