当前位置: 首页 > 知识库问答 >
问题:

动态模拟类中的方法

鲁展
2023-03-14
@Named
public Class A {
   public void methodInA() {
   System.out.println("In A"); 
  }
}

@Named
public Class B {
   public void methodInB() {
   System.out.println("In B"); 
  }
}


下面是我在测试中尝试做的事情。

TestConfig:

@SpyBean
A a;

测试::

String className = "A";
String methodName = "methodInA";


Object bean = applicationContext.getBean("a");
Class clazzToSpy = bean.getClass();

Class[] paramTypes = clazzToSpy.getMethod(methodName);

Answer answer = new Answer() {
@Override
public Object answer(final InvocationOnMock invocationOnMock) throws Throwable {
   if(invocationOnMock.getMethod().getName().equals(methodName)) {
       throw new UnknownError("Manual Exception Created");
   }
   return invocationOnMock.callRealMethod();

  }
};

//Here I want to use the answer on the mock Something like below.

Method mockedMethod = clazzToSpy.getMethod(methodName, paramTypes);

Mockito.doAnswer(answer).when(mockedMethod)


mockito:通过反射调用参数的mock方法

mockito:是否可以将mock与方法名结合在一起,在when()调用中创建methodCall?

利用Mockito通过反射模拟方法

共有1个答案

壤驷康裕
2023-03-14

这似乎不起作用了,因为你:

@Spy
Method methodSpy;

莫基托投出:

org.mockito.exceptions.base.MockitoException: Unable to initialize @Spy annotated field 'methodSpy'.
Please ensure that the type 'Method' has a no-arg constructor.

如果你:

@Mock
Method methodMock;
java prettyprint-override">org.mockito.exceptions.base.MockitoException:
Cannot mock/spy class java.lang.reflect.Method
Mockito cannot mock/spy because :
    - final class
MockitoAnnotations.initMocks( this );
 类似资料:
  • 本文向大家介绍手动模拟JDK动态代理的方法,包括了手动模拟JDK动态代理的方法的使用技巧和注意事项,需要的朋友参考一下 为哪些方法代理? 实现自己动态代理,首先需要关注的点就是,代理对象需要为哪些方法代理? 原生JDK的动态代理的实现是往上抽象出一层接口,让目标对象和代理对象都实现这个接口,怎么把接口的信息告诉jdk原生的动态代理呢? 如下代码所示,Proxy.newProxyInstance()

  • 我想创建一个模板随机数生成器类,它可以是整数类型,也可以是浮点类型。为什么?对于赋值,我编写了一个累积函数(本质上与std::acculate相同),我想制作一个可以是任意整数或浮点类型的测试工具(例如,无符号| short | long | long long int、float、double)。我们一直在研究模板,我试图通过使用模板编程来做出动态编译时决策。我可能用了错误的方法来处理这个问题-

  • 在安装到AEM 5.6.1实例之前,我正在使用maven构建和测试我的代码。我已经编写了单元测试,这些测试使用wcm的实现从aem模拟中获益。io和其他需要使用powermockito模拟静态方法的单元测试。 以下是我对aem上下文、sling Mock和powermock的maven依赖关系。 在我的课堂上,我正在为aem上下文设置规则,并准备一些用于模拟的静态类: 当我通过命令行运行mvn测试

  • 我试图模拟一个单例类(SessionDataManager),通过调用静态getInstance()方法获得一个实例,但所有尝试似乎都返回null。 我试过了

  • 错误:org.mockito.exceptions.misusing.missingMethodInvocationException:when()需要一个参数,该参数必须是“mock上的方法调用”。例如:when(mock.getArticles()).thenreturn(articles); 此外,此错误可能会出现,因为:1。您可以存根:finall/private/equals()/has

  • 问题内容: 假设我有一个像这样的课程: 如何使用简单的模拟方法模拟静态方法调用?。 我正在使用简单的模拟3.0 问题答案: 不知道如何使用纯EasyMock,但可以考虑使用EasyMock 的PowerMock扩展。 它具有很多很酷的功能,可以满足您的需要 -https://github.com/jayway/powermock/wiki/MockStatic