我开始使用Google Guice进行日常编程任务。我需要将现有对象传递给Injector以初始化对象图,因此我使用方法 Injector#injectMembers(instance) 来执行此操作。但是我不确定它是否有效所以我写了一个单元测试,但它没有像我预期的那样工作。我错过了什么?我使用Guice 3
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);
}
}
答案 0 :(得分:1)
injectMembers
注入一个非Guice创建的对象及其依赖项。您想要做的是我的模块中的bind(Login.class).toInstance(login);
。