Мой вопрос(ы): как мне настроить автономное приложение для 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());
}
}
введите здесь описание изображения
Заранее спасибо и дайте мне знать, если это не Правильное место для публикации/Мне нужно предоставить дополнительную информацию.
Подробнее здесь: https://stackoverflow.com/questions/792 ... h-and-othe