我想我有一些单位测试 - 匕首错过了。
我正在尝试测试实现此接口的类:
public interface GetAndroidOSVersionInteractor {
public String execute ();
}
班级就是这个:
public class GetAndroidOSVersionInteractorImpl implements GetAndroidOSVersionInteractor {
@Inject
public GetAndroidOSVersionInteractorImpl (){
super();
}
@Override
public String execute() {
String version = "android: " + Build.VERSION.RELEASE + " device: " + Build.MANUFACTURER + Build.MODEL;
return(version);
}
}
它的注入模块就是这个:
@Module(library = true, complete = false)
public class InteractorsModule {
@Provides
GetAndroidOSVersionInteractor provideGetAndroidOSVersionInteractor(GetAndroidOSVersionInteractorImpl getAndroidOSVersionInteractorImpl) {
return getAndroidOSVersionInteractorImpl;
}
}
但是当我执行这个测试时,它总是返回-1 NullPointerException:
@RunWith(MockitoJUnitRunner.class)
public class GetAndroidOSVersionInteractorTest extends TestCase {
GetAndroidOSVersionInteractor getAndroidOSVersionInteractor;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
@Test
public void executeTest(){
final String os = getAndroidOSVersionInteractor.execute();
assertNotNull(os);
}
}
我错过了什么?这是Dagger 1.2的问题吗? 你能解释一下为什么这不起作用吗?
非常感谢你。
答案 0 :(得分:0)
您最有可能需要以下内容:
@RunWith(MockitoJUnitRunner.class)
public class GetAndroidOSVersionInteractorTest extends TestCase {
@Inject // <-- this
GetAndroidOSVersionInteractor getAndroidOSVersionInteractor;
和
private ObjectGraph testObjectGraph;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
testObjectGraph = ObjectGraph.create(new MockModule());
testObjectGraph.inject(this);
}
和
@Module(injects={GetAndroidOSVersionInteractorTest.class}, includes={InteractorsModule.class})
public class MockModule {
}