现在我仍在使用 JUnit,我遇到了 EasyMock,我知道两者都是出于相同的目的。 我的理解正确吗?
EasyMock相对于Junit有什么优势?
哪一个更容易配置?
EasyMock 有什么限制吗?
请帮助我学习
最佳答案
当我解释单元测试时,我喜欢将它们描述为阶段列表:
- 测试设置:定义并创建测试所需的所有数据和对象
- 期望:说出您期望在测试期间执行哪些方法和参数
- 测试:您要测试的实际行为/方法调用
- 断言:确保测试结果成功的声明
- 测试拆除:销毁测试期间发生的任何副作用
jUnit 是一个单元测试框架,提供除期望阶段之外的所有测试。 Java 领域的替代方案包括:
- 测试NG
- jtest
- jBehave(某种程度上)
- jDave(某种程度上)
其他语言等效项包括:
- PHP - phpUnit
- Ruby - 测试::单元
- 闪存 - FlexUnit
模拟的概念增加了期望的新阶段,并且由于 jUnit 在模拟运动之前看到了它的大部分主要发展,因此这些功能没有合并到核心中,并且有一组工具来填补这一空白java空间已经开放。这些库包括
- EasyMock
- jMock
- jMockIt
所有这些库都是对我列出的任何上述单元测试框架的补充,包括 jUnit。它们添加了定义模拟对象的能力。模拟对象获得分配给它们的“期望”,然后在断言阶段对其进行断言。每个模拟库的实现方式略有不同,但主要模型是
- 记录重播 - EasyMock
- 期望 - jMock、jMockIt
我个人很喜欢期望方法,这种方法更具声明性,并且不易出错,因为它需要实现者调用更少的方法,但这是一种风格偏好,而不是技术偏好。
其他语言(因为它们比 java 晚进入单元测试世界)大多数情况下没有这种分离。单元测试库和模拟库是一回事。 phpunit、rspec 中就是这种情况。我想 jUnit 不会很快将其本地化,因为已经有如此丰富的替代模拟库可用。
关于java - Junit 和 EasyMock 理解澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2688304/