我正在为Web应用程序编写单元测试并使用Java Play! (2.1.3)框架的FakeApplication类。
public class TagTest {
public static FakeApplication app;
...
// BeforeClass only runs once before any tests are run
@BeforeClass
public static void setUpBeforeClass() {
// Set up new FakeApplication before running any tests
app = Helpers.fakeApplication(Helpers.inMemoryDatabase());
Helpers.start(app);
}
...
}
我在我的四个测试类中都有相同的setUpBeforeClass()方法来测试我的四个不同模型中的每一个但是当我运行 play test 命令时,所有四个测试类都返回类似的错误:
[error] Test models.TagTest failed: java.lang.NullPointerException: null
[error] at Global.onStart(Global.java:59)
[error] at play.core.j.JavaGlobalSettingsAdapter.onStart(JavaGlobalSettingsAdapter.scala:17)
[error] at play.api.GlobalPlugin.onStart(GlobalSettings.scala:175)
[error] at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:68)
[error] at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:68)
[error] at scala.collection.immutable.List.foreach(List.scala:309)
[error] at play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:68)
[error] at play.api.Play$$anonfun$start$1.apply(Play.scala:68)
[error] at play.api.Play$$anonfun$start$1.apply(Play.scala:68)
[error] at play.utils.Threads$.withContextClassLoader(Threads.scala:18)
[error] at play.api.Play$.start(Play.scala:67)
[error] at play.api.Play.start(Play.scala)
[error] at play.test.Helpers.start(Helpers.java:354)
[error] at models.TagTest.setUpBeforeClass(TagTest.java:35)
第35行是行:
Helpers.start(app);
我在这里做错了吗?
答案 0 :(得分:2)
从你自己的Global
课程的第59行中提取NPE,就像覆盖GlobalSettings.onStart()
一样?
查看/调试那里以查看问题所在。如果没有看到你的代码,很难再提出建议 - 对于Global
的基本介绍以及如何使用它,可能会check this out。
顺便说一下 - 只需要几个额外的点
app
是一个静态变量?它应该是TagTest
的实例变量。TagTest
第35行的代码 - 这可以在stacktrace的倒数第二行看到。跟踪的第一行显示了实际抛出异常的方法 - 其余的只显示导致该方法调用的调用堆栈。