如何对使用Google Guice的课程进行单元测试?

时间:2018-04-20 13:18:51

标签: java unit-testing guice

我有一个看起来像这样的java类:

someMethod()

Google Guice正用于依赖注入。

我正在尝试编写单元测试以涵盖ImageUpdaterFactory imageUpdaterFactory = injector.getInstance(ImageUpdaterFactory.class); PerPixelImageUpdater perPixelImageUpdater = (PerPixelImageUpdater) imageUpdaterFactory.create(image); ,并且我不确定实例化测试类的最佳方法。

我最初的尝试是使用Guice来创建类:

this.pixelUpdater.doSomething()

但是我不确定模拟对new的调用的最佳方法,所以我可以在不同的场景下测试方法中的其他逻辑。

使用{{1}}调用构造函数并传入模拟工厂会更好吗?在使用Guice进行单元测试时,我很难找到关于推荐的最佳实践的任何文档。

1 个答案:

答案 0 :(得分:1)

刚刚将我的所有单元测试从使用Guice创建的对象重新编写为手动实例化对象,我可以肯定地说,手动创建它们对于测试来说要好得多。它只是提供了更多的灵活性。用模拟,假货,测试实现代替一个或所有参数要容易得多。

我正在使用JUnit 5依赖注入使自己变得更容易,拥有一个“标准”扩展,它提供了Guice通常会创建的一些更常用的对象图,并在需要时使用它。但是在测试该图的一小部分时,只需手动创建对象。