2つのアプリケーションがあります。これらのアプリケーションの 1 つに対して統合単体テストを行いましたが、他のアプリケーションを呼び出すサービスはモックアップされています (実際のサービスを注入する代わりに、モックアップされた別のサービスを注入します)。
他のアプリケーションをモックアップせずに実際に接続する方法はありますか?
簡単な例は本当に役に立ちます。
前もって感謝します!
2つのアプリケーションがあります。これらのアプリケーションの 1 つに対して統合単体テストを行いましたが、他のアプリケーションを呼び出すサービスはモックアップされています (実際のサービスを注入する代わりに、モックアップされた別のサービスを注入します)。
他のアプリケーションをモックアップせずに実際に接続する方法はありますか?
簡単な例は本当に役に立ちます。
前もって感謝します!
実際のサービスを注入して、統合テストを行うだけです。問題は、注入する必要があるすべてのものを確実に注入できるようにすることです。foo が bar に依存するサービス foo と bar を呼び出しましょう。アプリケーションサーバーでアプリを実行していないため、バーがアプリケーションサーバーの何かに依存している場合、ユニット中に起動すると問題が発生する可能性があります。
統合テストは重要で価値がありますが、セットアップには慎重な検討が必要です。アプリケーションで統合テストをセットアップする方法は、スプリング プロファイルを使用して構成の組み合わせを分離することです。たとえば、私はプロファイルと呼ばれています。
そうすれば、適切なプロファイルで起動されるテストを実行して、正しい Bean をすべて注入するように設定できます。
@ActiveProfile(profiles={"deveolpment","standalone"})
@RunWith ... etc other spring annotations to configure a test
public class SomeJunitTest {
}
プロファイルを使用すると、テストごとに構成された Bean のセットをきめ細かく制御することが非常に簡単になります。
また、統合テストについては、統合テストの作成を容易にする機能を備えているため、TestNG の方が JUnit を使用する方がはるかに簡単であることがわかりました。