JUnit 测试中的 Guice 注入器 [已关闭]
2022-09-01 16:21:04
使用 Guice,在每个 JUnit 测试类中获取新的注入器是否是一种很好的做法,因为每个测试类都应该是独立的?
使用 Guice,在每个 JUnit 测试类中获取新的注入器是否是一种很好的做法,因为每个测试类都应该是独立的?
如果有人偶然发现这个问题,并希望了解如何从单元测试中获取 Guice 注释,请从如下所示的基类扩展测试,然后调用injector.injectMembers(this);
public class TestBase {
protected Injector injector = Guice.createInjector(new AbstractModule() {
@Override
protected void configure() {
bind(HelloService.class);
}
});
@Before
public void setup () {
injector.injectMembers(this);
}
}
然后你的测试可以像这样注射HelloService
public class HelloServiceTest extends TestBase {
@Inject
HelloService service;
@Test
public void testService() throws Exception {
//Do testing here
}
}
您应该真正避免在单元测试中使用 Guice,因为每个测试都应该足够小,以便手动 DI 是可管理的。通过在单元测试中使用 Guice(或任何 DI),您可以隐藏一个警告,即您的类变得太大并承担了太多责任。
为了测试引导程序代码和集成测试,那么是的,为每个测试创建一个不同的注入器。