我怎样才能避免使用Guice样板代码

时间:2015-10-16 15:55:47

标签: playframework guice

如何避免使用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);

    }
}

2 个答案:

答案 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

不确定这两件事是否可以开箱即用,但绝对值得尝试。