如何在android(MVP)上测试演示者?
我以前从未创建过单元测试。我计划为我的演示者和数据源创建UI测试和单元测试。我在我的应用程序中使用改型、RxJava和Dagger 这是我到目前为止试过的 数据源(我的数据源来自API) 我在设备上运行此应用程序没有问题,但我无法使其在测试中正常工作 知道如何修复演示者测试吗?我做得对吗 如何测试我的数据源?我不知道如何测试这个如何在android(MVP)上测试演示者?,android,testing,mvp,Android,Testing,Mvp,我以前从未创建过单元测试。我计划为我的演示者和数据源创建UI测试和单元测试。我在我的应用程序中使用改型、RxJava和Dagger 这是我到目前为止试过的 数据源(我的数据源来自API) 我在设备上运行此应用程序没有问题,但我无法使其在测试中正常工作 知道如何修复演示者测试吗?我做得对吗 如何测试我的数据源?我不知道如何测试这个 谢谢您您还必须: dataSource.getNews()在以下情况下使用Mockito: e、 g 因此,您必须将测试代码引入成功回调,并检查调用了哪些方法。 厄洛尔
谢谢您您还必须: dataSource.getNews()在以下情况下使用Mockito: e、 g 因此,您必须将测试代码引入成功回调,并检查调用了哪些方法。
厄洛尔案件也是如此。保持简单。您正在测试演示者,而不是数据源。将新方法添加到演示者以获得成功和错误响应。然后添加两个测试:一个测试成功,一个测试错误
@Override
public void getNews() {
view.setLoading(true);
dispossable = dataSource.getNews(new DataSourceContract.Callback<NewsResponse>() {
@Override
public void onSuccess(NewsResponse responseData) {
onSuccessNewsResponse(responseData);
}
@Override
public void onFailure(Throwable e) {
onErrorNewsResponse(e);
}
});
}
错误测试:
@Test
public void getNewsError() {
presenter.onErrorNewsResponse(your_error);
Mockito.verify(...);
}
我尝试返回回调,但错误仍然相同,应该实现哪个接口?RxJava还是我的自定义回调?当(dataSource.getNews(new Contract.Callback(){onSuccess()onFailure()})).thenReturn(new DisposableObserver(){onNext()onError()onComplete()});我试过你的&它很有效,我仍然认为,我需要测试我的数据源吗?
public class MainPresenterTest {
@Mock
DataSource dataSource;
@Mock
MainContract.View view;
MainContract.Presenter presenter;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
presenter = new MainPresenter(view, dataSource);
}
@Test
public void getNews() throws Exception {
List<Article> articleList = new ArrayList<>();
presenter.getNews();
Mockito.verify(view, Mockito.only()).getNewsSuccess(articleList);
}
}
Wanted but not invoked:
view.getNewsSuccess([]);
-> at com.java.mvp.view.main.MainPresenterTest.getNews(MainPresenterTest.java:37)
when(dataSource.getNews()).thenReturn(new SuccessCallback());
@Override
public void getNews() {
view.setLoading(true);
dispossable = dataSource.getNews(new DataSourceContract.Callback<NewsResponse>() {
@Override
public void onSuccess(NewsResponse responseData) {
onSuccessNewsResponse(responseData);
}
@Override
public void onFailure(Throwable e) {
onErrorNewsResponse(e);
}
});
}
@Test
public void getNewsSuccess() {
presenter.onSuccessNewsResponse(your_response);
Mockito.verify(...);
}
@Test
public void getNewsError() {
presenter.onErrorNewsResponse(your_error);
Mockito.verify(...);
}