【发布时间】:2018-06-19 17:59:33
【问题描述】:
我正在尝试使用 Mockito 模拟 ContainerRequestContext,但出现以下错误:
java.lang.ClassFormatError: Absent Code attribute in method
that is not native or abstract in class file
javax/ws/rs/core/Response
我的目标是在上下文中设置标题以测试拦截器类。
@RunWith(MockitoJUnitRunner.class) public class
MyInterceptorTest
@Mock
ContainerRequestContext context;
@Mock
MyService service;
@InjectMocks
MyInterceptor interceptor;
@Test
public void shouldAuthorizeUsingHEader() {
when(context.getHeaderString("header1")).thenReturn("123456");
when(context.getHeaderString("header2")).thenReturn("BigBall");
interceptor.filter(context);
verify(context, never()).abortWith(any(Response.class));
}
【问题讨论】:
-
提供一些代码示例。我只能假设您只是以这种方式模拟它: ContainerRequestContext requestContext = mock(ContainerRequestContext.class);并抛出 ClassFormatError。
-
更新了@MeetJoeBlack
-
你的展示还不够。你在使用
@RunWith(MockitoJunitRunner.class)你在打电话给MockitoAnnotations.init(this)或者别的什么吗? -
我正在正确地实例化 Mock
-
您的问题是由您没有告诉我们的事情引起的。我复制了您的测试(如您的问题中所述)并且没有问题。根据错误消息,问题似乎是由您的类路径上不兼容的 jar 引起的。对于我的测试,我只使用了
javax.ws.rs-api
标签: java spring unit-testing mockito