私がコード化したプライベートメソッドの1つをテストするためには、シングルトンをモックする必要があります。 PowerMockitoでいくつかのメソッドをテストした後PowerMockitoでシングルトンを嘲笑して
:私はこのクラスをモックすることができませんでした
PowerMockito.mockStatic(UtilDatabaseSoldeAutoCdeCommon.class);
Mockito.when(UtilDatabaseSoldeAutoCdeCommon.getInstance()).thenReturn(mockDatabase);
。したがって、私はすべての方法で私のメソッドをテストすることはできません、私はデータベースにアクセスします。
UtilDatabaseSoldeAutoCdeCommonは、例えば次のように定義される。
public class UtilDatabaseSoldeAutoCdeCommon extends AbstractUtilDatabase {
private static UtilDatabaseSoldeAutoCdeCommon instance;
private UtilDatabaseSoldeAutoCdeCommon() {
super();
}
public static UtilDatabaseSoldeAutoCdeCommon getInstance() {
if(instance == null) {
instance = new UtilDatabaseSoldeAutoCdeCommon();
}
return instance;
}
...
}
それのgetInstance()を呼び出したときに、私はpowermockitoをデバッグが、毎回のconsructorが呼び出され、それは(存在しない)構成ファイルをロードしようとして、それがクラッシュ。
正確には、設定ファイルは、UtilDatabaseEnrichissementのabsract親クラスの定数として定義され、コンストラクタで使用されます。
この部分をテストするにはどうすればよいですか?
PrepareForTest
おそらく、シングルトンを使用するかどうかを再考しますか? –
私は本当にこの選択肢がありません...私の仕事はプログラムの小さな進化であり、他の多くのモジュールで使われているようにこの部分を変更することはできません。 オブジェクトがインスタンス化されたときと同じように偽装することは不可能かもしれませんが、configファイルを開こうとします。 '@RunWith(PowerMockRunner.class) @PrepareForTest({EnrichissementProcess:そこで解決策は、私は私のクラスは、テストのために準備されたTHA言うのを忘れ – Biologeek