0

Tomcat コンテナー内でアプリケーションを開発しているときに、Eclipse と JUnit 4 を使用しています。コンテナーは、Oracle データベースへの接続を管理します。

JUnit でテストしているときに、次の問題が発生しました。テスト対象のコンストラクターには、次のようなものがあります。

public Subject() {
    // stuff
    FancySingleton.getInstance().getFancy("stuff");
}

残念ながら、メソッドgetFancy()はクエリを実行しようとしますが、JUnit は tomcat コンテナー内で実行されず、無限ループに陥るため実行できません。

私の最初のアイデアは、コードを推奨することでした。考え直してみると、それは悪い考えのように思えました。コミットする前にコメントを削除するのを忘れる可能性があります。

私の 2 番目のアイデアは、JUnit テストの実行中に実行されないように、Eclipse のコードを強調表示することでした。ただし、そのような方法をサポートするにはEclipseが必要です。

最後に、プリプロセッサ ディレクティブのようなものを考えました。

あなたの考えは?ブール値をコンストラクターに渡すだけでは、そのような状況に対処するためのクリーンな方法ではありません。

4

1 に答える 1

3

FancySingleton をモックするか、正しく実装してインジェクトします。

于 2013-02-26T14:08:46.033 に答える