gpt4 book ai didi

java.lang.ClassFormat错误: when trying to mock HttpServletRequest using Mockito

转载 作者:行者123 更新时间:2023-11-29 09:30:43 25 4
gpt4 key购买 nike

我正在 Eclipse 中运行一些单元测试,我正在使用 Mockito 模拟如下:-

    HttpServletRequest mockRequest = mock(HttpServletRequest.class);

当我从 在 Eclipse 中 运行测试时,我得到以下堆栈跟踪

java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/servlet/ServletException
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)

但是,当我使用 maven 从命令行运行时,我没有收到任何此类错误

我在其他地方看到过类似的问题,我确保我有实现 jar 而不仅仅是 API jar。我的maven依赖如下

    <dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet</artifactId>
<version>10.0-b28</version>
<scope>test</scope>
</dependency>

我在这上面花了太多时间,摆弄我的类路径并多次清理我的工作区但无济于事。

最佳答案

我刚刚创建了一个简单的测试:

@Test
public void test(){
HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
System.out.println(request);
}

使用我的 Helios eclipse 和您提供的依赖项 - 一切都按预期工作,没有异常(exception)......您可能在 eclipse 的类路径上有其他内容,或者问题可能来自不同的行。

您可以尝试使用(例如)检查使用了哪个 jar

HttpServletRequest.class.getProtectionDomain().getCodeSource()

您也可以考虑使用 httpunit 而不是模拟请求。

关于java.lang.ClassFormat错误: when trying to mock HttpServletRequest using Mockito,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14615039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com