AEM Sling Servlet JUnit5测试执行报错排查求助
解决Mockito MissingMethodInvocationException 问题
常见触发场景及修复方案
- 操作非模拟对象:如果用
when()或verify()处理的不是Mockito生成的模拟实例(比如直接new的对象),会触发该异常。确保目标对象是通过Mockito.mock()或@Mock注解创建的。 - 方法类型不支持:Mockito默认无法模拟final、static或private方法,若你在测试中对这类方法进行
when()/verify()操作,会抛出异常。需要开启Mockito Inline模式(添加mockito-inline依赖),或调整测试逻辑避开这类方法。 - 参数匹配不兼容:
when()/verify()中使用的参数匹配器(如anyString())与实际调用的参数不匹配,比如传了null但用了anyString()(该匹配器不接受null),需改用nullable(String.class)或调整参数。 - AEM对象模拟不完整:Sling的
SlingHttpServletRequest、SlingHttpServletResponse等对象需要正确初始化上下文。比如模拟请求参数时,要先通过when(request.getParameter("key")).thenReturn("value")设置,不能直接调用方法而不预设行为。
需补充的信息以精准定位问题
请提供以下内容:
- Servlet核心业务代码(尤其是调用
CustomResponseHandler的逻辑) CustomResponseHandler工具类的完整代码- 测试类的完整代码(包括注解、模拟对象初始化、测试方法)
- 完整的报错堆栈信息
内容的提问来源于stack exchange,提问作者tech boy
相关产品推荐
相关产品推荐

