Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 简单类的单元测试(使用Dagger 1.2)_Android_Junit_Mockito_Dagger - Fatal编程技术网

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指南: