assertTrue выдает NPE в тесте JUnit, но файл не равен NULL - PullRequest
2 голосов
/ 08 мая 2019

У меня есть простой тест JUnit, где я проверяю, является ли изображение нулевым или нет.Изображение существует и находится внутри моей папки ресурсов в пакете пользовательского интерфейса.

Вот тест:

@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)

Каквозможно ли это, когда изображение существует и находится в папке пользовательского интерфейса?

JUnit test

Ответы [ 2 ]

1 голос
/ 08 мая 2019

В вашем примере Gdx.files имеет значение null, поэтому появляется NPE.

Ваша проблема в том, что Gdx.инструменты доступны только после запуска приложения, такого как LwjglApplication или HeadlessApplication из LibGdx.

Поскольку сначала после запуска экземпляра приложения 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

0 голосов
/ 08 мая 2019

скорее всего, текущий рабочий каталог - это не то, что вы думаете

...