1
クラスは次のようになります。どのようにユニットテスト(Guiceのを使用して)、フィールドインジェクションを持つクラスをする
public class SomeAdapter {
@Inject
HttpService httpService;
@Inject
Configuration configuration;
public SomeAdapter()
{
GuiceInjector.getInjector().injectMembers(this);
}
public String getBaseUrl()
{
return configuration.getProtocol()+ "://" + some.getServer() + ":" + configuration.getPort();
}
}
私はmockitoフレームワークからInjectMocksを試してみましたが、それはreliable.Wouldが作成していないようですAbstractModuleを拡張する別個のテストモジュールが必要ですか?
テスト対象のクラスは、Guice API(プロダクションクラスのどこにも表示されない)を悪用しています。コンストラクタ内のコードが削除された場合、クラスは模擬依存の注入をサポートする任意の模倣ライブラリ(EasyMock、Mockito、JMockitなど)でテスト可能である必要があります。 –
@Rogérioなので、 'GuiceInjector.getInjector()。injectMembers(this)'はコンストラクタ内に表示されてはいけません。 –
はい、依存性注入の全体のポイントは、クラスの依存関係を別の外部エンティティ(DIフレームワーク/コンテナ、およびDI構成ファイルまたはクラス - モジュール)に移動することです。 Guiceの場合)。プロダクションクラス自体には、たいてい '@Iject'のようなメタデータアノテーションが含まれていなければなりません。 –