Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EasyMock和返回泛型类的方法_Java_Junit_Tdd_Powermock_Easymock - Fatal编程技术网

Java EasyMock和返回泛型类的方法

Java EasyMock和返回泛型类的方法,java,junit,tdd,powermock,easymock,Java,Junit,Tdd,Powermock,Easymock,只是想知道如何使用EasyMock或PowerMock从方法中模拟Class类型的返回对象 我试图模拟这个接口方法的返回类型 Class<T> getRootBeanClass(); 我收到了这个错误消息 java.lang.IllegalStateException: matcher calls were used outside expectations 非常感谢您的任何帮助anyObject()是一个参数匹配器 您可以使用它,以便EasyMock能够区分您提出的不同模拟规范

只是想知道如何使用EasyMock或PowerMock从方法中模拟Class类型的返回对象

我试图模拟这个接口方法的返回类型

Class<T> getRootBeanClass();
我收到了这个错误消息

java.lang.IllegalStateException: matcher calls were used outside expectations
非常感谢您的任何帮助

anyObject()
是一个参数匹配器

您可以使用它,以便EasyMock能够区分您提出的不同模拟规范。比如:

EasyMock.expect(mock.foo(eq("A"), anyObject()).andReturn(resultForA);

EasyMock.expect(mock.foo(eq("B"), anyObject()).andReturn(resultForB);
返回的对象必须是真实的现有对象(可以模拟,也可以不模拟)。但是
anyObject()
不会为您创建对象

EasyMock无法为您生成泛型-因此需要强制转换,例如:

Class<Foo> foo = (Class<Foo>) mock(Class.class)
Class foo=(Class)mock(Class.Class)
但这在本例中不起作用-因为java.lang.Class是最终的!EasyMock不能模拟期末考试!你需要PowerMock,或者(我的建议)Mockito的最新版本


如果您选择Mockito:请阅读他们的文档-因为您必须启用最终类的模拟-到目前为止,这是一项实验性功能。

仅供记录:您可能希望删除不再需要的旧注释。。。
Class<Foo> foo = (Class<Foo>) mock(Class.class)