我有一个应用程序(使用注释的 Spring MVC 4 + Hibernate/JPA + MySQL + Maven 集成示例),使用基于注释的配置将 Spring 与 Hibernate 集成。
我有这个控制器:
public class AndroidBackController {
protected static final Logger LOGGER = LoggerFactory.getLogger(AndroidBackController.class);
private static final Hashtable<String, Date> SMS_NOTIFICATION = new Hashtable<String, Date>();
@RequestMapping(value = { "/sigfoxCallBack" }, method = RequestMethod.GET)
public String performAndroidCallBack(@RequestParam Map<String, String> allRequestParams) throws ClientProtocolException, IOException {
Date lastsmsSend = SMS_NOTIFICATION.get(deviceEvent.getDevice().getKey());
..
}
and this Test:
public class AndroidBackControllerTest {
@InjectMocks
AndroidBackController androidCallBackController;
@Mock
DeviceService deviceService;
@Mock
DeviceEventService deviceEventService;
@Mock
Hashtable<String, Date> SMS_NOTIFICATION = new Hashtable<String, Date>();
@Mock
Map<String, String> allRequestParams;
@BeforeClass
public void setUp(){
MockitoAnnotations.initMocks(this);
}
@Test
public void androidCallBack() throws ClientProtocolException, IOException {
PowerMockito.mockStatic(Hashtable.class);
Device device = new Device();
DeviceType deviceType = new DeviceType();
deviceType.setType("SMARTEVERYTHING_KIT");
device.setDeviceType(deviceType);
when(allRequestParams.get("devideId")).thenReturn("E506");
when(allRequestParams.get("rssi")).thenReturn("155.55");
when(SMS_NOTIFICATION.get("E506")).thenReturn(new Date());
when(deviceService.findByKey("E506")).thenReturn(device);
Assert.assertEquals(androidCallBackController.performAndroidCallBack(allRequestParams), "alldevices");
}
}
但我在这一行有一个 java.lang.NullPointerException:
日期 lastsmsSend = SMS_NOTIFICATION.get(deviceEvent.getDevice().getKey());