0
我一直在关注CoffeeMaker教程here。现在我不想在我的测试中覆盖任何模块/组件,但想要在我的JUnit测试中注入Class ElectricHeater。如何在JUnit测试中用Dagger2注入类
当我这样做时,当我调用heater.on()时,我得到一个NullPointerExeception。不知道我错过了什么。
这里是测试代码。
package coffee;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import javax.inject.Inject;
@RunWith(JUnit4.class)
public final class CoffeeMakerTest {
@Inject
Heater heater;
@BeforeClass
public static void setUp() {
CoffeeComponent coffeeComponent = DaggerCoffeeComponent.builder().
build();
}
@Test
public void testCoffeeMaker() throws Exception {
heater.on();
}
}
你还没有说,如果这是行家,gradle产出,或者其他......但无论如何,你会介意,包括您的构建脚本的样本?匕首指南明确指出“[不要使用匕首进行单元测试](http://google.github.io/dagger/testing.html#dont-use-dagger-for-unit-testing)”,但由于它是一个编译时注入框架,我真的认为它应该是可能的,可能与你的构建脚本的调整。 – dcsohl
其他内部构建,我不能分享。是的,我知道匕首不适用于单元测试。我只是试图在JUnit中注入一些用于集成测试框架的类,我打算编写它来测试它是否可行。不过,我找到了答案,我如何才能做到这一点,见下文。 – Prakash