assertTrue 在 JUnit 测试中给出 NPE,但文件不为空

assertTrue gives NPE in JUnit Test, but file is not null

我有一个简单的 JUnit 测试,我在其中检查图像是否为 null。该图像存在并且位于 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 为空,因此出现了 NPE。

你的问题是Gdx。工具仅在您从 LibGdx 启动 LwjglApplication 或 HeadlessApplication 等应用程序后可用。

因为首先在您启动应用程序实例后,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