Java 播放2.4消息对象抛出NullPointerException
此问题仅在测试模式下发生。基本上,我在一个正在测试的类中调用了Messages.get()Java 播放2.4消息对象抛出NullPointerException,java,nullpointerexception,playframework-2.4,Java,Nullpointerexception,Playframework 2.4,此问题仅在测试模式下发生。基本上,我在一个正在测试的类中调用了Messages.get() Messages.get("api.parser.missing.id") 这存在于 public long getParserId() throws UnknownParserIdException { if (parserEntity == null || parserEntity.parserId == 0) { throw new UnknownParse
Messages.get("api.parser.missing.id")
这存在于
public long getParserId() throws UnknownParserIdException {
if (parserEntity == null || parserEntity.parserId == 0) {
throw new UnknownParserIdException(Messages.get("api.parser.missing.id"));
}
return parserEntity.parserId;
}
在我的测试中,我有以下几点
@Test
public void testSaveAndGetParserId() {
try {
addParserService.attachAppId(appId);
addParserService.attachParserJson(jsonToAttach);
addParserService.transformAttachedJson();
addParserService.saveParserEntity();
Long parserId = addParserService.getParserId();
boolean isPositive = parserId > 0;
assertTrue(isPositive);
ParserRepository parserRepository = new ParserRepository();
parserRepository.deleteParserById(parserId);
}
catch (MalformedParserException | UnknownAppIdException | UnknownParserIdException e) {
assertTrue(false);
}
}
现在,每当我运行这个测试时,我都会得到以下NPE
[error] Test services.AddParserServiceTest.testTransformNoJsonAttached failed: java.lang.NullPointerException: null, took 0.09 sec
[error] at play.api.i18n.DefaultMessagesApi.preferred(Messages.scala:482)
[error] at play.api.i18n.DefaultMessagesApi.preferred(Messages.scala:488)
[error] at play.i18n.MessagesApi.preferred(MessagesApi.java:128)
[error] at play.mvc.Http$Context.messages(Http.java:173)
[error] at play.mvc.Http$Context.lang(Http.java:165)
[error] at play.i18n.Messages.getLang(Messages.java:29)
[error] at play.i18n.Messages.get(Messages.java:109)
[error] at services.impl.AddParserService.transformAttachedJson(AddParserService.java:31)
[error] at services.AddParserServiceTest.testTransformNoJsonAttached(AddParserServiceTest.java:57)
我还有其他类和测试,它们不是我的服务包的一部分,它们很好地使用了il8n类
我查过的东西
- 被调用的消息确实存在于消息中
- 消息文件列在application.conf中(它包含在application.test.conf中)
- 在我的服务类中删除对Messages.get()的调用修复了NPE,但我显然不想这样做
相关帖子:它在conf中的默认位置。为什么play不能从那里读取它?将它放在测试根目录中并不能修复它。您在游戏代码中有七个堆栈帧。您是否已进入播放代码以查看为空的内容?这似乎是开始的地方。好问题。老实说,我从来没有为游戏设置过调试器,你有什么好材料吗?那以后可能会帮我省去很多麻烦。