繁体   English   中英

如何使用Dagger2在JUnit Test中注入类

[英]How to Inject a class in JUnit Test with Dagger2

我一直在这里关注CoffeeMaker教程。 现在,我不想覆盖测试中的任何模块/组件,但想将Class ElectricHeater注入我的JUnit测试中。

当我这样做时,我在调用heater.on()时得到了一个N​​ullPointerExeception。 不知道我在想什么。

这是测试代码。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM