Как мне сделать модульные тесты для приложения LibGDX, которое использует SpriteBatch и другие методы/классы OpenGL?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как мне сделать модульные тесты для приложения LibGDX, которое использует SpriteBatch и другие методы/классы OpenGL?

Сообщение Anonymous »

Я пытался использовать библиотеку headless-backend для создания модульных тестов для моего собственного подкласса (MainMenuScreen) класса ScreenAdapter, но A) MainMenuScreen использует класс SpriteBatch при своей инициализации, и, насколько мне известно, там это не способ посмеяться над этим, и Б) я не совсем уверен, правильно ли я настраиваю безголовое приложение. Я использую Maven для зависимостей, JUnit для тестирования и JaCoco для информации о тестовом покрытии.
Мой вопрос(ы): как мне настроить автономное приложение для MainMenuClass? Если это невозможно сделать, есть ли другой способ создания классов модульного тестирования, использующих методы/классы LibGDX и OpenGL (особенно SpriteBatch)?
Что я уже исследовал:
  • https://javadoc.io/doc/com.badlogicgame ... index.html: gdx-backend Java-документация; очень скудно, без примеров или объяснений того, как работает код.
  • Есть ли какой-нибудь способ создать интеграционный тест для приложения libGDX?: ответ прямо под вопросом содержит лучший пример, который я могу Узнайте, как использовать HeadlessApplication в методе установки. Однако я думаю, что для этого мне нужно создать обезглавленную версию класса, который я хочу протестировать; Я не знаю, как это сделать.
  • https://github.com/TomGrill/gdx-testing/tree/master: библиотека gdx-тестирования Тома Гриля. Я на 99 % уверен, что всё, что я делаю, — это беру зависимый от LibGDX код и превращаю его в безголовое приложение, но все мои попытки использовать его с треском провалились.
Мой код модульного теста:

Код: Выделить всё

public class MainMenuTest {
final MazeGame testGame = mock(MazeGame.class);
private MainMenuScreen testScreen;
private HeadlessApplication app;

// TODO: get the headless backend working; the current problem is getting OpenGL methods working
u/BeforeEach
public void setup() {
MockGraphics mockGraphics = new MockGraphics();
Gdx.graphics = mockGraphics;
Gdx.gl = mock(GL20.class);

testScreen = new MainMenuScreen(testGame);
HeadlessApplicationConfiguration config = new HeadlessApplicationConfiguration();
app = new HeadlessApplication(new ApplicationListener() {
u/Override
public void create() {
// Set the screen to MainMenuScreen directly
testScreen = new MainMenuScreen(testGame); // Pass null or a mock game instance if necessary
}
u/Override
public void resize(int width, int height) {}
u/Override
public void render() {
testScreen.render(1 / 60f); // Simulate a frame render
}
u/Override
public void pause() {}
u/Override
public void resume() {}
u/Override
public void dispose() {
testScreen.dispose();
}
}, config);
}

/**
* Test to see if the start button works.
*/
u/Test
public void startButtonWorks() {
// doesn't click start button
Button startButton = testScreen.getStartButton();
assertEquals(false, startButton.isChecked());

// clicks start button
((ChangeListener) (startButton.getListeners().first())).changed(new ChangeEvent(), startButton);
assertEquals(true, startButton.isChecked());
}
}
Текущая ошибка во время теста mvn:
введите здесь описание изображения
Заранее спасибо и дайте мне знать, если это не Правильное место для публикации/Мне нужно предоставить дополнительную информацию.

Подробнее здесь: https://stackoverflow.com/questions/792 ... h-and-othe
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»