首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

JMock!高分求解如果设定返回值的有关问题

2012-01-19 
JMock高手请进!高分求解如果设定返回值的问题类ClassB中有如下的一个方法methodXXX,返回值为类ClassA的一

JMock高手请进!高分求解如果设定返回值的问题
类ClassB中有如下的一个方法methodXXX,返回值为类ClassA的一个实例。

public ClassA methodXXX () {

  final ClassA classA = new ClassA();

  ......


  return classA;

}

现在要测试类ClassB的方法methodXXX,类ClassA的实例在methodXXX中定义,类ClassB中没有ClassA实例的setter方法,请问高手如何用JMock虚拟ClassA来测试ClassB的方法methodXXX?

分不够可以在给,谢谢!


[解决办法]
不是很明白LZ的测试目的
要测试ClassB的methodXXX方法,那就是调用它以后得到的一个ClassA对象,然后asert这个对象是否和期待的对象一致就好了,为什么还要虚拟一个ClassA呢?

[解决办法]

探讨

不是很明白LZ的测试目的
要测试ClassB的methodXXX方法,那就是调用它以后得到的一个ClassA对象,然后asert这个对象是否和期待的对象一致就好了,为什么还要虚拟一个ClassA呢?

[解决办法]
mockery.checking(new Expectations(){
{
//Just Mock it
}
});

[解决办法]
楼主的意思是否是这样:
ClassA是一个低层的具体类,如像连接数据库并提供了一些方法供使用,在ClassB中,某些方法依赖ClassA的方法,测试时直接new ClassA是不能成功的,需要Mock.

如果是这样,我想楼主首先重构下ClassB.
其次是:Jmock默认情况下是只支持接口的mock,不支持类的mock; 
如果要mock一个具体的类,可以使用ClassImposteriser 来创建mock,但注意的是不能创建mocks为final类和final方法。

示例(加入jmock-legacy.jar, cglib-nodep.jar ,objenesis.jar )
Java code
public class ClassA {    public String getStringVlaue(){        //查询数据库获取值        //String result = (retrieve DB);        String result = "Test";        return result;    }}
[解决办法]
菜鸟来学习

帮顶。祝楼主好运

热点排行