Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.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
Unit testing 如何在PowerMockito中模拟java.lang.reflect.Method类?_Unit Testing_Junit_Mocking_Mockito_Powermock - Fatal编程技术网

Unit testing 如何在PowerMockito中模拟java.lang.reflect.Method类?

Unit testing 如何在PowerMockito中模拟java.lang.reflect.Method类?,unit-testing,junit,mocking,mockito,powermock,Unit Testing,Junit,Mocking,Mockito,Powermock,我有一个实现InvocationHandler的类,如下所示: public class MyProxyClass implements InvocationHandler { public Object invoke (Object proxy, Method method, Object[] args) throws Throwable { //Do something interesting here } } 使用PowerMock&Mockito,我试图在单元测试类

我有一个实现InvocationHandler的类,如下所示:

public class MyProxyClass implements InvocationHandler
{
  public Object invoke (Object proxy, Method method, Object[] args) throws Throwable
  {
    //Do something interesting here
  }
}
使用PowerMock&Mockito,我试图在单元测试类中传入一个模拟方法对象:

@RunWith(PowerMockRunner.class)
@PrepareForTest({Method.class})
public class MyProxyTest
{
  MyProxy underTest;

  @Test
  public void testInvoke() throws Throwable
  {
    Method mockMethod = mock(Method.class);
    //...
  }
}
由于方法是
final
,所以我已经完成了
@PrepareForTest
技巧,但这似乎并没有解决它这是因为它是自举的吗?我只是做错了吗?

我一直在看下面的链接,但没有明确的内容:

    • 这一个似乎更倾向于静态方法,而不是创建最终类的模拟

使用PowerMock,您可以模拟最后一个类,但是,尽管我不相信有文档记录,但是java.lang和java.lang.reflect包中有一些类是您无法模拟的,因为它们对于模拟框架的工作方式来说太基础了

我认为这些包括(但可能不限于)java.lang.Class、java.lang.reflect.Method和java.lang.reflect.Constructor


但是,您试图做什么需要模拟方法?您可以很容易地创建一个真正的方法对象。您甚至可以在一个伪类上创建一个真正的方法对象,然后检查它是否被调用以及使用了什么参数。你不能用Mockito和Powermock来做这件事。查看您的问题是否与类似。

是的,看起来类似。我最终选择了通常从mock创建一个Method对象,然后验证该方法是否在mock上被调用。谢谢