我有一个简单的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文件夹中怎么办?
最佳答案
在您的示例中,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/