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
我有一个简单的 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