JUnit 测试中的 Guice 注入器 [已关闭]

2022-09-01 16:21:04

使用 Guice,在每个 JUnit 测试类中获取新的注入器是否是一种很好的做法,因为每个测试类都应该是独立的?


答案 1

如果有人偶然发现这个问题,并希望了解如何从单元测试中获取 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
    }
}

答案 2

您应该真正避免在单元测试中使用 Guice,因为每个测试都应该足够小,以便手动 DI 是可管理的。通过在单元测试中使用 Guice(或任何 DI),您可以隐藏一个警告,即您的类变得太大并承担了太多责任。

为了测试引导程序代码和集成测试,那么是的,为每个测试创建一个不同的注入器。


推荐