BaseClass
テストメソッドにjunitテストを書いています。このメソッドは、スーパー クラス メンバーを使用します。コンストラクターはをBaseClass
呼び出しますsuper(arg1, arg2)
。super(arg1, arg2) コンストラクターには、スーパー クラスのプライベート メンバーを設定する依存性インジェクターがあります。テストを実行しているとき、依存関係が設定されていないため、super() が例外をスローしています。依存性注入でプライベートメンバーを設定しているsuper()のステートメントのみをモックしたい。モキットをどうするか?
質問する
2966 次
1 に答える
2
フィールド注入は常にテストの問題です。したがって、選択肢があるときはいつでも、代わりにコンストラクター注入を選択してください。
依存関係インジェクターを開始して、実際のクラスの代わりにモックを注入することができます。ソリューションは、実際に使用する DI フレームワーク (guice、cdi など) によって異なります。guice の場合は、jukito、cdi Arquillian などを使用できます。ただし、テストの実行が遅くなり、テスト クラスが複雑になります。
別の方法として、テストクラスのインスタンスにプライベートフィールドを反映させ、単にモックを設定することもできます。何かのようなもの:
instance = new TestObject();
Field injected = TestObject.class.getDeclaredField("injected");
injected.setAccessible(true);
injected.set(instance, mock(InjectedType.class));
whileTestObject
はテストするクラス、injected
何かが注入されるInjectedType
プライベート フィールド、そのプライベート フィールドの型です。
于 2013-07-11T13:17:56.147 に答える