需要的几个包. 只是编译时的lib,方在文件夹compile-lib中:
两个简单的例子:
1、测试DAO方法:
思路:创建一个测试数据(不会重复创建),在测试环境中跑DAO方法,然后断言结果。
MailDAOTestCase.java:
INIT_MAIL = “xxx”; 是初始库表测试数据的SQL。
在执行每一个Test时总会先执行@before方法,执行完毕后测试方法后再执行@After方法
该方法测试mailDAO查询收邮件总量
Assert断言其值总是大于0的。
2、 测试Handler方法
思路: 利用创建JMock模拟session,packet等必要的类。并构建模拟类虚拟的返回值。执行HANDLER方法,截取方法参数来检测程序正确性。(现在做的是截取session.send()方法的Packet参数,测试协议格式)
MailHandlerTestCase.java:
context是JMock的对象,主要由它负责创建虚拟对象。
a、模拟一个packet对象
模拟返回值:
设置一个Expectations
执行一次(packet)的getInt()方法;将(放回(-1))//serial
b、测试参数
执行一次(session).send(packet);方法时,将适配以下规则
该方法抛出异常时返回:“("PacketMatcher : 协议返回格式错误"); ”测试失败提醒。
总结:
使用junit+jmock可以方便的使用以下特性:
1、 测试方法执行结果返回值;
2、 模拟目标方法所需参数;
3、 检测目标方法内部生成对象的合法性(pt = new Packet();.session.send(pt););
分享到:
相关推荐
模拟(Mock)对象技术是单元测试中的一个关键工具,它允许我们创建虚拟对象来模拟系统中难以控制或不存在的部分,以便更好地测试目标代码。JMock 是一个流行的 Java 模拟框架,它使开发者能够创建模拟对象并定义它们...
开发者可以通过`context.mock(Class<T> type)`方法来创建一个新的模拟对象,其中`type`是你想要模拟的接口或类。 其次,设置期待是jMock的核心操作之一。你可以使用`expectations`块来定义模拟对象的行为。例如,你...
4. **验证行为**:最后,使用`assertThat()`或`verify()`方法来检查模拟对象的行为是否符合预期。 **JMock 的高级特性** 1. **顺序控制**:JMock允许你精确控制方法调用的顺序,这对于测试特定的交互序列非常有用...
除了基本的模拟和期待,jMock还支持更复杂的场景,如顺序(顺序调用模拟对象的方法)、条件(某些方法的调用依赖于其他方法的调用结果)和回调(模拟对象方法的返回值取决于其他方法的调用)等。这些特性使得jMock...
然后,可以通过导入 JMock 相关的包并创建模拟对象来开始编写测试。同时,别忘了配置你的测试框架,使其能识别 JMock 的规则。 8. **最佳实践** - 尽量只模拟必要的依赖,避免过度模拟。 - 明确定义并验证期望,...
在JMock中,模拟对象通过`mock(Class<T> clazz)`方法创建,然后可以使用`expect`方法来指定其行为。例如,如果你有一个`Calculator`接口,可以这样创建并设置模拟对象: ```java Mockery context = new Mockery(); ...
- **期望行为**:在 jMock 中,可以通过配置模拟对象来指定它在特定方法调用时的预期行为,比如返回值或抛出异常等。 - **验证**:测试完成后,可以验证模拟对象的方法是否按照预期被调用,以此来确认被测对象的行为...
- `jmock-2.6.0.jar`: 这是核心库,包含所有必要的类和接口来创建和管理模拟对象。 - `jmock-junit4-2.6.0.jar`: 这个版本支持JUnit 4,可以方便地与JUnit测试一起使用。 - `jmock-2.6.0-sources.jar`: 这包含源代码...
在jmock中,可以通过`will()`方法来指定方法的返回值。例如,在上面的例子中,通过`will(returnValue(Para.Xian))`设定了`findAddress`方法返回的值。 #### 第4章 参数匹配 在实际的应用场景中,方法可能会接受多...
8. **断言(Assertions)**:虽然在jMock中,断言通常是通过设置期望来隐式完成的,但也可以使用JUnit的`assertEquals`等断言方法来验证其他结果,如返回值、状态等。 通过以上步骤,我们可以有效地使用jMock进行...
在这个例子中,我们创建了一个`MyDependency`的模拟对象,并定义了它`doSomething`方法的期望调用。然后在测试中,我们使用这个模拟对象来验证`MyService`的行为。 总的来说,Jmock2.6是Java开发者进行单元测试和...
1. **模拟接口和类**:JMock不仅支持模拟接口,也支持模拟具体类,这在处理非抽象类或者不能被继承的类时非常有用。 2. **期望表达式**:通过自然语言的表达方式,如`expectation`和`will`,可以清晰地定义对象的...
jMock 是一个专门为 Java 设计的模拟对象框架,它的核心目标是帮助开发者在进行单元测试时,能够方便地创建和控制模拟对象,以替代真实的依赖,这样可以避免在测试环境中引入不必要的复杂性和依赖性。jMock 与 JUnit...
它是一个接口,允许我们自定义bean的实例化逻辑,这在某些复杂场景下非常有用,比如动态代理、模拟对象的创建等。本篇文章将探讨如何结合`FactoryBean`与Jmock库来实现动态Mock类的注入,以便于进行单元测试。 首先...
在JMock中,你可以创建模拟对象来代替真实的对象,这些模拟对象会按照预设的行为进行响应,而不是实际执行复杂的代码逻辑。这使得测试更加可控,减少了对其他系统依赖的影响,提高了测试效率。 其次,jmock-cglib-...
JMock是一个用于Java应用程序单元测试的工具,它允许程序员模拟对象的行为,以便在孤立的环境中测试代码。在这个资源包中,包含了英文版的《JMock_CookBook_EN.pdf》和中文版的《JMock_CookBook_CN.pdf》,为不同...
2. **创建模拟对象**:在测试类中,使用JMock的Context接口创建模拟对象,并定义其行为。 3. **设置期望**:通过模拟对象的`expect`方法,设定对特定方法的调用期望,包括参数、返回值和调用次数。 4. **执行测试*...
JMock是一款强大的模拟框架,专门用于Java应用程序的单元测试,特别是对于那些依赖于复杂外部接口或者服务的类。本文档将详细介绍JMock的使用方法及其与JUnit的结合。 1. **什么是JMock?** JMock是一个开源的Java...
2. **期待(Expectation)**:在测试中,你可以设定对模拟对象的期望调用,包括调用的方法、参数和调用顺序。 3. **验证(Verification)**:测试结束后,JMock会检查模拟对象是否按照预设的期待执行了相应的操作。 ...
1. **创建模拟对象**:使用jMock的`Mockery`类创建模拟对象,并指定需要模拟的接口或类。 2. **定义期望**:通过`expect`方法设置模拟对象的行为和返回值。 3. **执行被测试代码**:在期望设定后,执行实际的测试...