我有一个简单的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文件夹中怎么办?

java - assertTrue在JUnit Test中提供NPE,但文件不为null-LMLPHP

最佳答案

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

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

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

要测试您的LibGdx项目和Gdx功能,请阅读以下内容: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

关于java - assertTrue在JUnit Test中提供NPE,但文件不为null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56039048/

10-10 13:54