【发布时间】:2015-05-16 09:53:45
【问题描述】:
我一直在尝试为以下代码行编写测试用例,但我不断收到 java.lang.NullPointerException,我试图遵循/复制其他人在这里提出的建议 Unit testing with Spring Security 但我没有运气。有人可以帮助我更好地识别或提示我需要做什么。 (我为此使用了 mockito)
代码:
if (SecurityContextHolder.getContext().getAuthentication().getPrincipal().equals(user)) {
continue;
}
测试用例:
@Test
public void testExpireAllSession() throws Exception {
SecurityContext securityContext = Mockito.mock(SecurityContext.class);
Mockito.when(securityContext.getAuthentication().getPrincipal().equals(any(Object.class))).thenReturn(false);
SecurityContextHolder.setContext(securityContext);
controller.theMEthodUnderTest();
}
..
【问题讨论】:
-
您应该将您的“if”语句分解为中间指令(带有中间局部变量),每行一个。然后你可以看到 NPE 发生在哪个对象上。但是我几乎可以肯定它来自未模拟的身份验证。