Junit和EasyMock理解澄清

gmh*_*mhk 2 java junit unit-testing easymock mocking

现在我仍在使用JUnit,我遇到了EasyMock,我理解两者都是出于同样的目的.我的理解是否正确?

EasyMock比Junit有什么优势?

哪一个更容易配置?

EasyMock有任何限制吗?

请帮我学习

小智 7

当我解释单元测试时,我喜欢将它们描述为一个阶段列表:

  • 测试设置:定义和创建测试所需的所有数据和对象
  • 期望:说出您希望在测试期间执行哪些方法和参数
  • 测试:您要测试的实际行为/方法调用
  • 断言:确保测试结果成功的陈述
  • 测试撕下:消除测试期间发生的任何副作用

jUnit是一个单元测试框架,除了期望测试阶段之外,它提供了所有测试.Java空间中的替代方案包括:

  • TestNG的
  • 的jtest
  • jBehave(有点)
  • jDave(有点)

其他语言等价物包括:

  • PHP - phpUnit
  • Ruby - Test :: Unit
  • Flash - FlexUnit

模拟的概念增加了Expectations的新阶段,并且由于jUnit在模拟运动之前看到了它的大部分主要开发,这些功能没有被整合到核心中,还有一组工具来填补java空间中的这个空白已经开放了.那些图书馆包括

  • EasyMock的
  • JMock的
  • jMockIt

所有这些库都是我列出的任何上述单元测试框架的补充,包括jUnit.他们添加了定义模拟对象的能力.模拟对象获得分配给它们的"期望",然后在断言阶段声明它们.每个模拟库都以不同的方式完成,但主要模型是

  • 录制重播 - EasyMock
  • 期望 - jMock,jMockIt

我个人是Expectations方法的粉丝,它更具说明性,并且不易出错,因为它需要较少的方法来被实现者调用,但这是一种风格偏好,而不是技术偏好.

其他语言(因为他们来到单元测试世界晚于java)在大多数情况下没有这个分离.单元测试库和模拟库是同一个.这是phpunit,rspec的情况.我想jUnit不会很快就会在原生中加入这个,因为已经有了这么丰富的替代模拟库.