Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Junit和EasyMock理解澄清_Java_Unit Testing_Junit_Mocking_Easymock - Fatal编程技术网

Java Junit和EasyMock理解澄清

Java Junit和EasyMock理解澄清,java,unit-testing,junit,mocking,easymock,Java,Unit Testing,Junit,Mocking,Easymock,现在我仍然在使用JUnit,我遇到了EasyMock,我知道这两者都是为了相同的目的。 我的理解正确吗 与Junit相比,EasyMock有哪些优势 哪一个更容易配置 EasyMock有任何限制吗 请帮我学习它们不是一回事 JUnit是一个测试框架——它有一个测试运行程序,可以循环测试套件,执行每个自动单元测试并记录结果 EasyMock是一个很好的例子。它用于将难以设置的合作者替换为假人/赝品/模拟品,以帮助关注我打算测试的行为。 e、 g.如果我的SUT.AuditCustomers()调用

现在我仍然在使用JUnit,我遇到了EasyMock,我知道这两者都是为了相同的目的。 我的理解正确吗

与Junit相比,EasyMock有哪些优势

哪一个更容易配置

EasyMock有任何限制吗


请帮我学习它们不是一回事

JUnit是一个测试框架——它有一个测试运行程序,可以循环测试套件,执行每个自动单元测试并记录结果

EasyMock是一个很好的例子。它用于将难以设置的合作者替换为假人/赝品/模拟品,以帮助关注我打算测试的行为。

e、 g.如果我的SUT.AuditCustomers()调用DAO.GetCustomer(databasePath),在我的测试中,我想重点关注方法AuditCustomers(),因此我会使用mockDAO,它不会从数据库中读取客户,而是返回已知/硬编码的客户对象以便于测试。这还有一个好处,即GetCustomer中的任何bug都不会使AuditCustomers()的测试失败。

我不确定,但我认为JUnit和EasyMock应该协同工作,而不是相互排斥。 JUnit的思想是测试一个给定的方法,因此您希望将其他类的虚拟实例注入其中,以确保JUnit测试完全不依赖于其他类方法。EasyMock和其他类似的模拟对象创建者提供JUnit中的模拟对象。使用spring将虚拟实现注入JUnit时也使用了类似的思想


EasyMock似乎很有希望,但您应该评估Spring或其他代理对象生成器是否适合您的场景

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

  • 测试设置:定义和创建测试所需的所有数据和对象
  • 期望值:说出您期望在测试期间执行的方法和参数
  • 测试:要测试的实际行为/方法调用
  • 断言:确保测试结果成功的声明
  • 测试拆除:销毁测试期间发生的任何副作用
jUnit是一个单元测试框架,除了测试的预期阶段之外,它提供了所有的功能。Java空间中的替代方案包括:

  • TestNG
  • jtest
  • jBehave(有点)
  • jDave(有点)
其他语言等价物包括:

  • PHP-phpUnit
  • Ruby-Test::Unit
  • Flash-FlexUnit
mocking的概念增加了新的期望阶段,而且由于jUnit在mocking运动之前看到了它的大部分主要开发,这些特性没有被纳入到核心中,一组工具填补了java领域的这一空白。这些图书馆包括

  • 轻松的
  • 杰莫克
  • 杰莫基特
所有这些库都是对我上面列出的任何单元测试框架(包括jUnit)的补充。它们增加了定义模拟对象的能力。模拟对象获得分配给它们的“期望”,然后在断言阶段断言这些期望。每个模拟库实现这一点略有不同,但主要模型是

  • 录制重播-EasyMock
  • 期望-jMock,jMockIt
我个人是期望方法的粉丝,它更具声明性,更不容易出错,因为它要求实现者调用更少的方法,但这是一种风格偏好,而不是技术偏好

其他语言(因为它们比java更晚进入单元测试领域)在很大程度上没有这种分离。单元测试库和模拟库是同一个库。rspec的phpunit就是这种情况。我想jUnit不会很快以本机的方式合并它,因为已经有如此丰富的替代模拟库可用