FakeApplication启动时出现NullPointerException

时间:2013-08-26 23:38:42

标签: java playframework nullpointerexception playframework-2.1

我正在为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);

我在这里做错了吗?

1 个答案:

答案 0 :(得分:2)

从你自己的Global课程的第59行中提取NPE,就像覆盖GlobalSettings.onStart()一样?

查看/调试那里以查看问题所在。如果没有看到你的代码,很难再提出建议 - 对于Global的基本介绍以及如何使用它,可能会check this out

顺便说一下 - 只需要几个额外的点

  • 为什么app是一个静态变量?它应该是TagTest的实例变量。
  • 你不必指出TagTest第35行的代码 - 这可以在stacktrace的倒数第二行看到。跟踪的第一行显示了实际抛出异常的方法 - 其余的只显示导致该方法调用的调用堆栈。