测试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); } }); }
请帮助我测试这个代码。我附上了我想测试的方法。这里我想验证是否调用了showDialog方法 同时附加单元测试代码测试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>
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");
}