测试rxjava 公共void getTerms(布尔显示对话框){ service.getTermsFromServer().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new SingleSubscriber()){ @凌驾 成功时的公共void(字符串值){ 试一试{ JSONObject JSONObject=新的JSONObject(值); JSONObject data=JSONObject.getJSONObject(“数据”); 字符串内容=data.getString(“内容”); 字符串id=data.getString(“id”); 如果(显示对话框){ ***signUpView.showDialog(内容,id)***; }否则{ 协议条款(id); } }捕获(JSONException e){ e、 printStackTrace(); } } @凌驾 公共无效onError(可丢弃错误){ Log.e(getClass().getName(),“Error:+new Gson().toJson(Error.getStackTrace()); ErrorCheck.processError(错误、gson、signUpView); } }); }

测试rxjava 公共void getTerms(布尔显示对话框){ service.getTermsFromServer().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new SingleSubscriber()){ @凌驾 成功时的公共void(字符串值){ 试一试{ JSONObject JSONObject=新的JSONObject(值); JSONObject data=JSONObject.getJSONObject(“数据”); 字符串内容=data.getString(“内容”); 字符串id=data.getString(“id”); 如果(显示对话框){ ***signUpView.showDialog(内容,id)***; }否则{ 协议条款(id); } }捕获(JSONException e){ e、 printStackTrace(); } } @凌驾 公共无效onError(可丢弃错误){ Log.e(getClass().getName(),“Error:+new Gson().toJson(Error.getStackTrace()); ErrorCheck.processError(错误、gson、signUpView); } }); },android,unit-testing,rx-java,rx-android,Android,Unit Testing,Rx Java,Rx Android,请帮助我测试这个代码。我附上了我想测试的方法。这里我想验证是否调用了showDialog方法 同时附加单元测试代码 public void getTerms(boolean showDialog) { service.getTermsFromServer().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new SingleSubscriber<String>

请帮助我测试这个代码。我附上了我想测试的方法。这里我想验证是否调用了showDialog方法

同时附加单元测试代码

   public void getTerms(boolean showDialog) {
  service.getTermsFromServer().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new SingleSubscriber<String>() {
        @Override
        public void onSuccess(String value) {

            try {
                JSONObject jsonObject = new JSONObject(value);
                JSONObject data = jsonObject.getJSONObject("data");
                String content = data.getString("content");
                String id = data.getString("id");
                if (showDialog) {
                    ***signUpView.showDialog(content, id)***;
                } else {
                    agreeTerms(id);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onError(Throwable error) {
            Log.e(getClass().getName(), "Error : " + new Gson().toJson(error.getStackTrace()));
            ErrorCheck.processError(error, gson, signUpView);
        }
    });

}
@测试
public void testGettermscaled(){
字符串术语=“{\'data\”:{\'id\”:\“67f07c7a482542\”,“content\”:“测试的一部分”,“timestamp\”:1484768675815,“timestampFormatted\”:“2017-01-18T19:44:35\”,“metadata\”:null,““version\”:“{\'id\”:“v1\”,“,“versionStatus\”:“候选者\,“消息”:null}”;
TestSubscriber TestSubscriber=新的TestSubscriber();
signUpService.getTermsFromServer().just(术语).subscribe(testSubscriber);
signUpPresenter.getTerms(true);
Mockito.verify(signUpView).showDialog(“测试的一部分”,“67f07c71-1707-4b7a-a168-d7d05a482542”);
}

谢谢

使用
RxJavaPlugins.setInitIoSchedulerHandler
RxAndroidPlugins.registerschedulerhook
指定您自己的
TestScheduler
,然后使用其
advanceTimeBy
方法进行一些时间传递,然后验证是否发生了预期的调用

@Test
public void testGetTermsCalled(){
    String terms= "{\"data\":{\"id\":\"67f07c7a482542\",\"content\":\"<h3>Part of the test</h3>\",\"timestamp\":1484768675815,\"timestampFormatted\":\"2017-01-18T19:44:35\"},\"metadata\":null,\"version\":{\"id\":\"v1\",\"versionStatus\":\"candidate\",\"message\":null}}";
    TestSubscriber<String> testSubscriber = new TestSubscriber<>();
    signUpService.getTermsFromServer().just(terms).subscribe(testSubscriber);
    signUpPresenter.getTerms(true);
    Mockito.verify(signUpView).showDialog("<h3>Part of the test</h3>","67f07c71-1707-4b7a-a168-d7d05a482542");

}