+ -
当前位置:首页 → 问答吧 → JMock高手请进!高分求解如果设定返回值的问题

JMock高手请进!高分求解如果设定返回值的问题

时间:2011-09-26

来源:互联网

类ClassB中有如下的一个方法methodXXX,返回值为类ClassA的一个实例。

public ClassA methodXXX () {

  final ClassA classA = new ClassA();

  ......


  return classA;

}

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

分不够可以在给,谢谢!

作者: Paradise_heida   发布时间: 2011-09-26

自己SF!

作者: Paradise_heida   发布时间: 2011-09-26

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

作者: qybao   发布时间: 2011-09-26

引用 2 楼 qybao 的回复:

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

你要什么?期望神马样的值,实际获得的值。这两个值相比!!

作者: yuan8080   发布时间: 2011-09-26

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

你好,是这样,如果ClassA的实例classA需要用到一些有依赖性的方法,比如链接服务器等等。
虚拟测试就是要完全独立的测试,达到没有服务器环境也可以测试的目的。
所以,ClassA需要虚拟。

作者: Paradise_heida   发布时间: 2011-09-26

引用 3 楼 yuan8080 的回复:
引用 2 楼 qybao 的回复:

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

你要什么?期望神马样的值,实际获得的值。这两个值相比!!

你说的这是真实测试,JUnit就能实现。
现在是想测试类ClassB的方法methodXXX,methodXXX方法里面用到了ClassA的实例。
由于ClassA不能实现真实测试(比如环境不允许),这时候想测类ClassB的方法methodXXX,就要用JMock虚拟ClassA来实现。

作者: Paradise_heida   发布时间: 2011-09-26

mockery.checking(new Expectations(){
{
//Just Mock it
  }
});

作者: tanya88   发布时间: 2011-09-26

热门下载

更多