Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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 如何对改装回调进行单元测试?_Android_Unit Testing_Retrofit_Retrofit2_Okhttp3 - Fatal编程技术网

Android 如何对改装回调进行单元测试?

Android 如何对改装回调进行单元测试?,android,unit-testing,retrofit,retrofit2,okhttp3,Android,Unit Testing,Retrofit,Retrofit2,Okhttp3,我正在尝试创建UnitTest案例,用于在android中改装2个回调。我用于测试mockito、MockWebServer和MockResponse public class LoginFragment extends Fragment { /** * Actualiza el numero telefonico para el usuario * * @param phoneNumber */ public void phoneNumber(

我正在尝试创建UnitTest案例,用于在android中改装2个回调。我用于测试mockito、MockWebServer和MockResponse

public class LoginFragment extends Fragment {
/**
     * Actualiza el numero telefonico para el usuario
     *
     * @param phoneNumber
     */
    public  void phoneNumber(String phoneNumber) {
        HttpService service = Service.createService(HttpService.class, TOKEN);
        Call<Void> call = service.phonumber(phoneNumber, new User("", ""));
        call.enqueue(callback());
    }

    /**
     * @return Callback<Void>
     */
    public Callback<Void> callback() {
        return new Callback<Void>() {
            @Override
            public void onResponse(Call<Void> call, Response<Void> response) {
                if (response.isSuccessful()) {
                    dummy();
                } else {
                    Log.e(TAG, "problema");
                }
            }

            @Override
            public void onFailure(Call<Void> call, Throwable t) {
                Log.e(TAG, " " + t);
            }
        };
    }

    public void dummy(){
        System.out.println(" called");
    }
}
但当您运行测试时,我得到:

TestLoginFragment > testDummyIsCalled FAILED
    Wanted but not invoked:
    loginFragment.dummy();

我刚开始做回调测试,如何验证调用了
dummy()

根据定义,单元测试只测试单元本身的功能。因此,它可能无法捕获集成错误

您不应该测试改型框架或其回调,必须假定改型总是有效的。只测试您的代码,因此为phoneNumber(字符串phoneNumber)创建一个测试,检查服务是否正确配置(不需要启动改装服务),并创建其他测试,以检查在OnSuccess或OnFailure情况下服务器的可能响应


PD:如果您想测试改装调用和回调方法之间的耦合,那么您谈论的是“集成测试”。

如果您只调用execute(),它将同步执行请求,那么会简单得多。你打算测试什么?rest客户端是否正常工作,或者您的应用程序对其成功/失败的响应?您好@Fractal扳手,我正在尝试测试响应(成功/失败),检查是否调用了functon dummy()。如何调用execute()?只需调用.execute(),如果您不确定execute()和enqueue()之间的区别,请查看改装文档。我是片段上execute()和enqueue()之间的区别,需要异步调用,但如何在片段登录中对改装回调进行单元测试?。例如,签入onResponse和onFailure
TestLoginFragment > testDummyIsCalled FAILED
    Wanted but not invoked:
    loginFragment.dummy();