如何避免使用guice锅炉板?
使用Spring,我通常使用@AutoWired就是这样,没有createInjector,没有injectMemebers(this)。有没有办法在使用giuce时避免这些?我可以做一些全局设置吗?我会自动将所有内容注入应用程序和测试类中吗?
public class AccountDaoTest {
@Before
public void setup() {
Injector injector;
injector = Guice.createInjector();// I don't want this boiler-plate
injector.injectMembers(this);
}
@Inject
AccountDAO accountDao ;
@Test
public void persist(){
Account ac = new Account();
ac.setName("AccountName");
ac.setAccountType(AccountType.Hospital);
accountDao.createAccount(ac);
}
}
答案 0 :(得分:2)
我猜你正在寻找像SpringJunitRunner这样的东西:https://github.com/caarlos0/guice-junit-test-runner
@RunWith(GuiceTestRunner.class)
@GuiceModules(MyModule.class)
public class MyTest {
@Inject
private Something something;
@Test
public void testItWorks() throws Exception {
Assert.assertThat(something.doSomething(), CoreMatchers.notNullValue());
}
}
答案 1 :(得分:0)
正如Jan建议的那样,您可以使用测试跑步者来应对手动注射器构造。为了消除对具有测试绑定的一次性模块的需要,有新的“绑定字段”和#39;功能从Guice 4开始(参见wiki page)
不确定这两件事是否可以开箱即用,但绝对值得尝试。