单元测试登录方法

时间:2018-11-08 14:53:32

标签: java android testing

我正在开发一个Android应用程序,其中测试是开发过程的一部分。因此,对于我而言,测试通常是一个新领域,我经常挣扎。我需要有关对用于执行用户登录的方法进行单元测试的建议。由于method为void并实现了回调,因此我假设应该模拟类或某些对象。在我的应用程序中,我使用JUnit,Robolectric和Mockito进行测试。

我能够执行测试以检查带有其参数的方法是否被调用,但是我很好奇(不知道)如何测试onResponse和onErrorResponse回调。我提供了下面的代码。预先感谢。

 public void loginUser(String email,String pass){
        try {
            requestQueue = Volley.newRequestQueue(getActivity().getApplicationContext());
            StringRequest request = new StringRequest(Request.Method.POST, Url+"/checkUser.php", new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                    if(response.contains("present")){
                        Toast.makeText(getActivity(), "Welcome", Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent(getActivity(), MainActivity.class);
                        startActivity(intent);
                    }
                    else{
                        Toast.makeText(getActivity(), response, Toast.LENGTH_SHORT).show();
                    }
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Toast.makeText(getActivity(), "Error", Toast.LENGTH_SHORT).show();
                }
            }){
                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
                    Map<String,String> parameters = new HashMap<String,String>();
                    parameters.put("email",email);
                    parameters.put("password",pass);

                    return parameters;
                }
            };
            requestQueue.add(request);
        }catch (Exception o){Log.w("TAG",o.getMessage());}
    }//loginUser

@Test
public void testLoginCall() throws Exception {
    loginFragment = Mockito.mock(LoginFragment.class);
    doNothing().when(loginFragment).loginUser("email","pass");
    loginFragment.loginUser("email","pass");
    verify(loginFragment,times(1)).loginUser("email","pass");
}

0 个答案:

没有答案