小编Arn*_*ost的帖子

使用Mockito通过反射模拟方法

我们正在使用Mock-Factory为我们的开发人员提供关于模拟功能的最大舒适度,以及对mockito本身不太可能需要的专业知识.

为此,我们的Mock-Factory提供了一个方法来创建一个模拟给定类名,方法名(通过regexp)和给定的返回值,它看起来如下(清楚这个问题的相关部分) ):

public <T> T getMockForMethod(Class<T> clazz, String methodName, Object methodResponse)
{
  T mockForMethod = mock(clazz);
  for (Method m : clazz.getDeclaredMethods ())
  {
    if (m.getName ().matches (methodName) && 
        m.getReturnType ().isAssignableFrom (methodResponse.getClass ()))
    {
      try
      {
         Class<?>[] paramTypes = m.getParameterTypes ();
         Object[] params = new Object[paramTypes.length];
         for (Object o : params)
         {
           o = Mockito.anyObject ();
         }
         Mockito.when (m.invoke (mockForService, params)).thenReturn (methodResponse);
      }
      catch (IllegalArgumentException e)
      {
        e.printStackTrace (System.err);
      }
      catch (IllegalAccessException e)
      {
        e.printStackTrace (System.err);
      }
      catch (InvocationTargetException e) …
Run Code Online (Sandbox Code Playgroud)

java reflection mockito

4
推荐指数
2
解决办法
1万
查看次数

标签 统计

java ×1

mockito ×1

reflection ×1