0
私は毎日のプログラミング作業にGoogle Guiceを使い始めています。オブジェクトグラフを初期化するために既存のオブジェクトをInjectorに渡す必要があったので、メソッドInjector#injectMembers(instance)を使用しています。しかし、私は単体テストを書いたので、それが動作するかどうかはわかりませんでしたが、期待通りに動作しませんでした。私は何か見落としてますか?私は、Guiceのは3方法Google GuiceのInjectMembers()は実際には機能しませんか?
public class Login_Should {
@Test
public void testName() throws Exception {
Login login = new Login();
Injector injector = Guice.createInjector(new LoginModule());
injector.injectMembers(login);
LoginWrapper caller = injector.getInstance(LoginWrapper.class);
assertEquals(login.getName(), caller.getName());
}
}
public class Login {
private int random;
public Login() {
this.random = new Random().nextInt();
}
public String getName() {
return "Mr. A" + random;
}
}
public class LoginWrapper {
private Login login;
@Inject
public LoginWrapper(Login login) {
this.login = login;
}
public String getName() {
return login.getName();
}
}
public class LoginModule extends AbstractModule{
@Override
protected void configure() {
bind(LoginWrapper.class);
}
}
この時点で私は混乱しました。あなたの答えをありがとう。 @Providesアノテーションを使用することでこの問題も解決できることがわかりました。 –