私が使用しているフレームワークは Dropwizard 7、Guice で、テスト用に Jukito を使用した Junit を使用しています。dw で作成されたリソースがあり、そのリソースに対応するテスト ケースを作成する必要があります。注: 最近、dw 6 から dw 7 に移行しました。
dw 6 では、次のようなテスト ケースがありました。
@RunWith(JukitoRunner.class)
public class AbcResourceTest extends ResourceTest{
@Inject
private Provider<XyzAction> xyzProvider;
public void setUpResources() throws Exception {
addResource(new AbcResource(xyzProvider));
}
@Test
public void doTesting() {
}
}
このメソッドは問題なく機能し、Guice はすべての依存関係を注入し、リソースは問題なく初期化されます。
しかし、DW 7 では、リソース テストを記述するための構文が次のように変更されました。
public class ResourceTest {
PersonDao personDao = mock(PersonDao.class);
@Rule public ResourceTestRule resources = ResourceTestRule
.builder()
.addResource(new Resource(personDao))
.build();
}
これは dw ドキュメントの例であり、正常に動作します。しかし、 PersonDao を嘲笑する代わりに、次のようなものを注入しようとすると:
@RunWith(JukitoRunner.class)
public class AbcResourceTest {
@Inject
private Provider<XyzAction> xyzProvider;
@Rule public ResourceTestRule resources = ResourceTestRule
.builder()
.addResource((new AbcResource(xyzProvider))
.build();
@Test
public void doTesting() {
}
}
このコードは、xyzProvider の null 値でリソースをインスタンス化します。Guice は xyzProvider をインスタンス化しますが、それは @Rule が評価された後でのみです。今私の問題は、@Rule が評価される前に Guice に依存関係を注入することです。それを実現する方法はありますか?