删除单元测试的依赖项

时间:2011-11-21 16:55:14

标签: java unit-testing testing mocking

我希望对我的代码进行单元测试,而不依赖于在我的Google应用引擎上启动并运行后端服务。实现这一目标的最佳方法是什么,而不必像Request工厂等那样创建我自己的每个类的实现。

这是我的代码。在运行单元测试时,我已经攻击Util类以返回模拟MyRequestFactory实例。然后,这个模拟工厂返回MyRequest的模拟实现 这又具有create,update delete等方法的模拟实现。 问题是我需要做更多的实体,最终会有大量的模拟类。

有更简单的方法吗?您认为哪种模拟框架最适合?

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("");

3 个答案:

答案 0 :(得分:2)

EasyMock易于使用。但是如果你发现自己为单元测试实现了太多的模拟类,那么这可能表明你的设计存在问题。

答案 1 :(得分:2)

我更喜欢Mockito进行模拟,因为它允许间谍和后期执行期望/验证。

此外,Powermock允许诸如模拟静态方法和调用构造函数之类的东西。

答案 2 :(得分:2)

JMockit我有很多运气。我之前尝试过JMock,虽然它有效,但它有点笨重。带有PowerMock扩展的Mockito / EasyMock易于使用,但它们干扰了我们的代码覆盖工具。