[英]How to Inject a class in JUnit Test with Dagger2
我一直在这里关注CoffeeMaker教程。 现在,我不想覆盖测试中的任何模块/组件,但想将Class ElectricHeater注入我的JUnit测试中。
当我这样做时,我在调用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();
}
}
修改后的代码
@Singleton
@Component(modules = { DripCoffeeModule.class })
public interface CoffeeComponent {
CoffeeMaker maker();
void inject(CoffeeMakerTest coffeeMaker);
}
@Before
public void setUp() {
CoffeeComponent coffeeComponent = DaggerCoffeeComponent.builder().build();
coffeeComponent.inject(this);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.