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.

最近使用ut的一些体会

写有价值的ut必须保证自己写的ut是有价值的,只要全部跑过了,那么代码的质量就可以得到保证。更有自信的改代码了使用ut之后,如果发现了bug或者需要重构代码的时候,可以大胆的去做,因为有覆盖率极高的u...

vim括号匹配等跳转技巧

vim 括号匹配跳转操作: % 跳转到相配对的括号 gD 跳转到局部变量的定义处 '' 跳转到光标上次停靠的地方, 是两个', 而不是一个" mx 设置书签,x只能是a-z的26个字母 ...

MOCK编写UT Case的步骤

使用MockObject写UT Case的步骤如下: 1、   新建一个JUnit的TestCase类,父类指定为:com.kddi.smc.togo.commons.dbunit.MockSmcTe...

利用Python Mock模拟OJ test case

场景需要在刷OJ的过程中,最常见的就是从stdin里面读取输入了,然后把结果输出到stdout上供OJ判断结果。一般来说,在本地写完程序之后都会手动输入一遍test case,观察输出结果之后发现不对...

基于UT4418编写自己的第一个Android程序 (五)

基于UT4418编写自己的第一个Android程序 (五)今天老谢要学习如何编写自己的第一个Hello Android程序,并使其在UT4418开发板上运行。一、决定使用UT4418开发板经过几番纠结...
  • itxiebo
  • itxiebo
  • 2016年04月20日 13:44
  • 975

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

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

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

转载自:http://blog.csdn.net/chjttony/article/details/14522771 Java单元测试对于开发人员质量保证至关重要,尤其当面对一团乱码的遗留代码时...

编写自己的Matcher与如何让编译器识别被mock的重载函数

本文目的 gmock框架中自带Matcher只针对c++内置类型,如string,int,float等等,有时候无法满足项目要求,所以需要编写自己的Matcher对象。本文介绍如何使用gmock...

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

Java单元测试对于开发人员质量保证至关重要,尤其当面对一团乱码的遗留代码时,没有高覆盖率的单元测试做保障,没人敢轻易对代码进行重构。然而单元测试的编写也不是一件容易的事情,除非使用TDD方式,否则编...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MOCK编写UT Case的步骤
举报原因:
原因补充:

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