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

时间:2016-03-16 18:14:24

标签: java junit dagger-2

我一直在关注CoffeeMaker教程here。现在我不想覆盖测试中的任何模块/组件,但想要将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();
  }
}

1 个答案:

答案 0 :(得分:-1)

修改后的代码

@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);
}