【发布时间】:2016-03-18 10:34:46
【问题描述】:
您好,我是 TDD 新手,想开始探索。
我有一个用例“RegisterAccount”,它将从用户那里获取一些注册信息(我们将其命名为“RegistrationInfo”),将其发送到服务器,获取成功状态并响应用户(成功,失败,或连接问题)。
现在我从一个测试用例开始测试,当注册成功时,用例会通知 UI 显示成功消息。所以我会有:
verify(registrationPresenter, times(1)).showRegistrationSuccessed();
作为我想要的结果(顺便说一句,我使用 Mockito 来模拟对象)。同时,我会有一个注册信息对象,没有mock:
RegistrationInfo info = new RegistrationInfo(username, password, email);
和被模拟的presenter一起注册服务类:
RegistrationPresenter registrationPresenter = Mockito.mock(RegistrationPresenter);
RegistrationService registrationService = Mockito.mock(RegistrationService.class);
现在,当我开始考虑将这 3 个部分联系在一起时,我不知道是否必须使此服务调用 同步 或 异步。
任何理智的开发人员都知道,我们绝不能在主线程中放置任何网络 I/O 来中断 UI 渲染,因此这个用例在某些时候需要转移到后台(线程、执行程序、异步任务等,等等)。 )。
我的第一个问题是我是否应该将此用例设计为同步并让服务层处理异步调用?还是以异步方式设计用例本身?
第二个问题是使用 java 并发实用程序中的 callback 或 FutureTask (或任何其他方式)是否更好地实现异步方法?
提前谢谢你。
【问题讨论】:
标签: java android unit-testing tdd