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

Mockito无法模拟此类:类javax.servlet.jsp.PageContext

通飞尘
2023-03-14
    Java               : 1.8
    JVM vendor name    : Oracle Corporation
    JVM vendor version : 25.202-b08
    JVM name           : Java HotSpot(TM) 64-Bit Server VM
    JVM version        : 1.8.0_202-b08
    JVM info           : mixed mode
    OS name            : Windows 10
    OS version         : 10.0
Underlying exception : java.lang.IllegalArgumentException: Could not create type
            at com.ups.webappcommon.cclamp.cclamptag.Wems_GetContentTagTest.setUp(Wems_GetContentTagTest.java:22)
            at junit.framework.TestCase.runBare(TestCase.java:125)
            at junit.framework.TestResult$1.protect(TestResult.java:106)
            at junit.framework.TestResult.runProtected(TestResult.java:124)
            at junit.framework.TestResult.run(TestResult.java:109)
            at junit.framework.TestCase.run(TestCase.java:118)
            at junit.framework.TestSuite.runTest(TestSuite.java:208)
            at junit.framework.TestSuite.run(TestSuite.java:203)
            at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:35)
            at org.mockito.internal.MockitoCore.mock(MockitoCore.java:62)
            at org.mockito.Mockito.mock(Mockito.java:1896)
            at org.mockito.Mockito.mock(Mockito.java:1805)
            ... 14 more
        Caused by: java.lang.NoClassDefFoundError: javax/el/ELContext
            at java.lang.Class.getDeclaredMethods0(Native Method)
            at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
            at java.lang.Class.getDeclaredMethods(Unknown Source)
            at net.bytebuddy.description.method.MethodList$ForLoadedMethods.
        Caused by: java.lang.ClassNotFoundException: javax.el.ELContext
            at java.net.URLClassLoader.findClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            ... 49 more
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.jsp.PageContext;
    import org.mockito.Mockito;
    import junit.framework.TestCase;

    public class xxxxxx extends TestCase {

        public xxxxxxxxxxxxxxxxx xx = new xxxxxxxxxxxxxxx();
        private final PageContext pageContext = Mockito.mock(PageContext.class);
        public HttpServletRequest request;

        protected void setUp() throws Exception {
            super.setUp();
            xxxxxxxxx.setPageContext(pageContext);
            request = Mockito.mock(HttpServletRequest.class);
            xxxxxxxx.setPageContext(pageContext);
            Mockito.when(pageContext.getRequest()).thenReturn(request);
        }

共有1个答案

柴瀚昂
2023-03-14

这里:

原因:java.lang.NoClassDefoundError:javax/el/elContext

这才是真正的问题。这归结为:项目设置不足。

您必须确保满足所有的依赖关系,即使是“可传递”的东西。

换句话说:确保您的类路径中有el-api.jar。

注意:错误消息...

Mockito只能模拟非私有和非最终类。

 类似资料:
  • 我在一次测试中试图使用一个模拟类,但出现了以下错误: 在pom中: (也试用了3.0.0版) 车辆等级: 测试类:

  • 我试图使用PowerMockito在我正在测试的代码中模拟java.net.URL类的创建。基本上,我希望防止真正的HTTP请求发生,而是1)在请求发出时检查数据,2)在模拟响应中提供我自己的测试数据。这就是我正在尝试的: 我要测试的代码如下所示: 在前面的测试场景中,我模拟了wlInvokeUrlString以匹配“MyURLString”。我还尝试使用whenNew行的各种其他形式,尝试注入模

  • 给定类别FOO: 我尝试使用JDK8而不是9,它工作得很好。我不知道它为什么会失败,也不知道我怎么才能让它成功。 当是依赖项时,就会发生此问题。如果您为其他类型(如)更改它,它可以正常工作...

  • 我无法使用mockito2模拟一个Kotlin final类。另外我还在用Robolectric。 这是我的测试代码: 请注意,我使用的是Mockito Version2,我使用的是依赖项,它自动启用模拟最终类的功能。

  • 基类 在派生类中不应用组合和其他函数。如果是,我是否应用了错误的模式?我应该如何处理相同的?