【发布时间】:2011-11-21 16:55:14
【问题描述】:
我想对我的代码进行单元测试,而不依赖于在我的谷歌应用引擎上启动和运行后端服务。什么是最好的方法来实现这一点,而不必创建我自己的每个类的实现,比如请求工厂等。
这是我的代码。我在运行单元测试时破解了Util 类以返回一个模拟MyRequestFactory 实例。然后这个模拟工厂返回 MyRequest 的模拟实现。
这又具有创建、更新删除等方法的模拟实现。
问题是我有更多的实体需要这样做,并且最终会得到大量的模拟类。
有没有更简单的方法?您认为哪种模拟框架最适合?
MyRequestFactory requestFactory = Util.getRequestFactory(mContext,
MyRequestFactory.class);
final MyRequest request = requestFactory.myRequest();
BookProxy bookProxy = request.create(BookProxy.class);
bookProxy.setDescription(bookDescription.getText().toString());
bookProxy.setName(bookName.getText().toString());
Log.i(TAG, "Adding book" + bookProxy.toString());
Request<bookProxy> sendRequest = request.updateBook(bookProxy);
sendRequest.fire();
bookName.setText("");
bookDescription.setText("");
【问题讨论】:
-
到目前为止,您为哪些事情编写了测试?
-
我使用 Robolectric 对我的 Activity 实施了一些非常基本的测试。例如,测试当我单击“添加图书”按钮时,新书将发送到服务器并添加到数据库中。为了让我对此进行测试,我使用一个实现来模拟 bookProxy 类,该实现只保留一个本地图书地图并从这个内部地图添加删除等,而不是调用 App 引擎服务。问题是创建模拟所涉及的工作比其他所有工作加起来要多得多。
标签: java unit-testing testing mocking