MOCK编写UT Case的步骤

原创 2006年06月14日 10:20:00

使用MockObjectUT Case的步骤如下:

 

1、   新建一个JUnitTestCase类,父类指定为:com.kddi.smc.togo.commons.dbunit.MockSmcTestCase

2、   找出要测试的方法都依赖于哪些外部EJB对象。

3、   使用EasyMock类库辅助生成所依赖的外部对象的Mock实现:

·         使用MockControlcreateControl(Class)方法为每个依赖的接口生成MockControl对象

·         调用MockControlgetMock()方法获得所依赖的接口的mock实现

·         根据该TestCase要测试的内容,模拟调用mock对象里会被调用的方法,并设置方法的返回值

·         如果模拟的是EJBHome/LocalHome接口,那么需要调用父类中的bind(String, Object)方法将其绑定到模拟的JNDI环境中

4、   调用被测试的方法。

5、   分别调用每个MockControlEasyMock提供)verify方法来验证实际执行时是否与期望的相符。

 

 

Resouses:

 

EasyMock的官方网站http://www.easymock.org/

UT时大部分的情况下只会用到一个类:MockControl,该类中经常使用到的方法的Javadoc如下,更详细的信息请参考在线文档http://www.easymock.org/EasyMock1_2_Java1_3_Documentation.html

 

public static MockControl createControl(java.lang.Class toMock)

Creates a mock control object for the specified interface. The MockControl and its associated mock object will not check the order of expected method calls. An unexpected method call on the mock object will lead to an AssertionFailedError.

Parameters:

toMock - the class of the interface to mock.

Returns:

the mock control.

 

public java.lang.Object getMock()

Returns the mock object.

Returns:

the mock object of this control

 

public void replay()

Switches the mock object from record state to replay state.

Throws:

java.lang.IllegalStateException - if the mock object already is in replay state

 

public void verify()

Verifies that all expectations have been met.

Throws:

java.lang.IllegalStateException - if the mock object is in record state.

junit.framework.AssertionFailedError - if any expectation has not been met

 

public void setDefaultReturnValue(java.lang.Object value)

Records that the mock object will by default allow the last method specified by a method call, and will react by returning the provided return value.

Parameters:

value - the return value.

Throws:

java.lang.IllegalStateException - if the mock object is in replay state, if no method was called on the mock object before. or if the last method called on the mock does not return an object.

java.lang.IllegalArgumentException - if the provided return value is not compatible to the return value of the last method called on the mock object.

 

public void setReturnValue(java.lang.Object value)

Records that the mock object will expect the last method call once, and will react by returning the provided return value.

Parameters:

value - the return value.

Throws:

java.lang.IllegalStateException - if the mock object is in replay state, if no method was called on the mock object before. or if the last method called on the mock does not return an object.

java.lang.IllegalArgumentException - if the provided return value is not compatible to the return value of the last method called on the mock object.

 

public void setThrowable(java.lang.Throwable throwable)

Records that the mock object will expect the last method call once, and will react by throwing the provided Throwable.

Parameters:

throwable - the Throwable to throw.

Throws:

java.lang.IllegalStateException - if the mock object is in replay state or if no method was called on the mock object before.

java.lang.IllegalArgumentException - if the last method called on the mock cannot throw the provided Throwable.

java.lang.NullPointerException - if throwable is null.

 

public void setDefaultThrowable(java.lang.Throwable throwable)

Records that the mock object will by default allow the last method specified by a method call, and will react by throwing the provided Throwable.

Parameters:

throwable - throwable the throwable to be thrown

Throws:

java.lang.IllegalArgumentException - if the last method called on the mock cannot throw the provided Throwable.

java.lang.NullPointerException - if throwable is null.

java.lang.IllegalStateException - if the mock object is in replay state, or if no method was called on the mock object before.

java之UT

EasyMock介绍 一、 mock介绍 1.1简介 mock测试 就是在测试过程中,对于某些不容易构造或者 不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。 m...
  • u010825172
  • u010825172
  • 2015年05月23日 13:58
  • 1043

有效使用Mock编写java单元测试

Java单元测试对于开发人员质量保证至关重要,尤其当面对一团乱码的遗留代码时,没有高覆盖率的单元测试做保障,没人敢轻易对代码进行重构。然而单元测试的编写也不是一件容易的事情,除非使用TDD方式,否则编...
  • chjttony
  • chjttony
  • 2013年11月08日 16:04
  • 73417

Mockito一个用于Java开发的伟大的模拟框架

Mock 测试就是在测试过程中,对于某些不容易构造(如 HttpServletRequest 必须在Servlet 容器中才能构造出来)或者不容易获取比较复杂的对象(如 JDBC 中的ResultSe...
  • boonya
  • boonya
  • 2017年04月20日 14:45
  • 1404

MOCK编写UT Case的步骤

使用MockObject写UT Case的步骤如下: 1、   新建一个JUnit的TestCase类,父类指定为:com.kddi.smc.togo.commons.dbunit.MockSmcTe...
  • fybing1986
  • fybing1986
  • 2011年05月12日 14:22
  • 739

java的mock测试框架

无论是敏捷开发、持续交付,还是测试驱动开发(TDD)都把单元测试作为实现的基石。随着这些先进的编程开发模式日益深入人心,单元测试如今显得越来越重要了。在敏捷开发、持续交付中要求单元测试一定要快(不能访...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年12月27日 22:57
  • 1249

Java|spring Mock入门

背景:Java中目前主要的Mock测试工具有Mockito,JMock,EasyMock等等,很多Java Mock库如EasyMock或JMock都是expect-run-verify(期望-运...
  • jjf09
  • jjf09
  • 2017年03月01日 17:14
  • 384

Java Mocking入门—使用Mockito

我们都会编写单元测试程序,但我们当前所面临的挑战是被测单元可能依赖于其他组件。而对于单元测试配置其他组件,绝对是过枉矫正。相反,我们可以使用Mocks框架代替其他组件,继续进行单元测试。 为了展现如...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年12月27日 22:56
  • 491

java入门学习:mockito之@Mock和@InjectMock

Mockito是java单元测试中,最常用的mck工具之一,提供了诸多打桩方法和注解。其中有两个比较常用的注解,@Mock和@InjectMock,名字和在代码中使用 的位置都很像,对于初学者,很容易...
  • freesonWANG
  • freesonWANG
  • 2017年04月30日 00:53
  • 2330

基于mock对象和JUnit框架简化Spring Web组件单元测试

对于Java组件开发者来说,他们都盼望拥有一组能够对组件开发提供全面测试功能的好用的单元测试。一直以来,与测试独立的Java对象相比,测试传统型J2EE Web组件是一项更为困难的任务,因为Web组件...
  • qbg19881206
  • qbg19881206
  • 2013年12月02日 17:25
  • 5453

MOCK编写UT Case的步骤

使用MockObject写UT Case的步骤如下: 1、   新建一个JUnit的TestCase类,父类指定为:com.kddi.smc.togo.commons.dbunit.MockSmcTe...
  • bedweather
  • bedweather
  • 2006年06月14日 10:20
  • 3521
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MOCK编写UT Case的步骤
举报原因:
原因补充:

(最多只允许输入30个字)