【发布时间】:2019-12-04 23:40:20
【问题描述】:
我是mvp单元测试的新手,我想对负责登录的演示者做一个verrry基本测试,我只想断言
view.onLoginSuccess();
这是 PresenterCode:
public LoginPresenter(LoginViewContract loginView,
LoginModelContract loginModel,
CurrentUserLoginModelContract currentUserLoginModel,
CompositeDisposable subscriptions) {
this.subscriptions = subscriptions;
this.loginView = loginView;
this.loginModel = loginModel;
this.currentUserLoginModel = currentUserLoginModel;
}
@Override
public void loginPres(LoginRequest loginRequest) {
loginModel.loginUser(loginRequest)
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SingleObserver<LoginResponse>() {
@Override
public void onSubscribe(Disposable d) {
subscriptions.add(d);
}
@Override
public void onSuccess(LoginResponse loginResponse) {
// do something with the response
loginView.loginSuccessMessage(token, true);
}
@Override
public void onError(Throwable e) {
loginView.loginFailedErrorMessage();
Timber.e(e, "Error while trying to login");
}
});
}
这里是Android测试代码:
@RunWith(MockitoJUnitRunner.class)
public class LoginPresenterTest {
@Mock
LoginViewContract view;
@Mock
LoginModelContract model;
@Mock
CurrentUserLoginModelContract localModel;
LoginPresenter SUT;
@Before
public void setUp() throws Exception {
compositeDisposable = new CompositeDisposable();
SUT = new LoginPresenter(view, model, localModel, compositeDisposable);
}
@Test
public void name() {
LoginResponse singleResponse = new LoginResponse();
TestScheduler testScheduler = new TestScheduler();
when(model.loginUser(any()))
.thenReturn(Single.just(new LoginResponse()));
SUT.loginPres(any());
}
它只是给了我 NullPointerException,我认为知道如何测试成功将帮助我测试其他所有内容,我已经阅读了有关 TestScheduler 的信息,我尝试过但没有帮助,我认为我做错了什么,谢谢前进。
【问题讨论】:
-
你看过这个:stackoverflow.com/questions/26699147/…也许有帮助?
-
你能发布异常吗?
标签: java android unit-testing rx-java