Android 简单类的单元测试(使用Dagger 1.2)
我想我错过了一些单元测试匕首 我正在尝试测试实现此接口的类:Android 简单类的单元测试(使用Dagger 1.2),android,junit,mockito,dagger,Android,Junit,Mockito,Dagger,我想我错过了一些单元测试匕首 我正在尝试测试实现此接口的类: public interface GetAndroidOSVersionInteractor { public String execute (); } 这门课是: public class GetAndroidOSVersionInteractorImpl implements GetAndroidOSVersionInteractor { @Inject public GetAndroidOSVersi
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;
}
}
其注入模块如下所示:
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);
}
}
我错过了什么?匕首1.2有问题吗?
你能解释一下为什么这样不行吗
多谢各位 您很可能需要以下几点:
@RunWith(MockitoJUnitRunner.class)
public class GetAndroidOSVersionInteractorTest extends TestCase {
@Inject // <-- this
GetAndroidOSVersionInteractor getAndroidOSVersionInteractor;
及
我不太了解MockModule的功能。我认为我需要通过ObjectGraph手动注入依赖项,但我不确定这个类做什么。如果我错了,请纠正我。您需要创建一个包含您的模块的根模块,并指定它注入测试类。有关更多信息,请参阅我的Dagger1指南: