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