assertTrue在JUnit测试中提供NPE,但文件不为空

时间:2019-05-08 10:52:17

标签: java testing junit nullpointerexception libgdx

我有一个简单的JUnit测试,其中检查图像是否为空。该图像存在并且位于ui程序包中我的资产文件夹中。

这是测试:

@Test
public void testCreate() throws Exception {
    assertTrue(Gdx.files.internal("ui/back.png").exists());
} 

这是我得到的例外:

java.lang.NullPointerException
    at com.fantasticfeasts.game.Teamkofigeditor.FantasticFeastsGameTest.testCreate(FantasticFeastsGameTest.java:35)

当图像存在并且位于ui文件夹中怎么办?

JUnit test

2 个答案:

答案 0 :(得分:1)

在您的示例中,Gdx.files为null,因此出现了NPE。

您的问题是Gdx。只有从LibGdx启动LwjglApplication或HeadlessApplication之类的应用程序后,这些工具才可用。

因为首先启动Application实例后,LibGdx将加载库并进行初始化:Gdx.app,Gdx.files,Gdx.graphics,Gdx.audio,Gdx.gl等。

要测试具有Gdx功能的LibGdx项目,请阅读以下内容:http://manabreak.eu/java/2016/10/21/unittesting-libgdx.html

以下是使用Gdx.files进行单元测试的示例:https://github.com/TomGrill/gdx-testing/tree/master/tests/src/de/tomgrill/gdxtesting

答案 1 :(得分:0)

最有可能的当前工作目录不是您认为的