一尘不染

使用libgdx的类的单元测试

java

我正在通过libgdx编写游戏;我正在使用junit框架来简化代码的单元测试。现在有一部分代码(一个地图生成器,一个将我自己的地图格式转换为TiledMap的类…),我需要对其进行彻底的测试,但是它使用libgdx代码:从文件处理到资产加载。我不打算以这种方式测试实际的图形输出或游戏本身:但是我想测试单个组件(计算,资产访问…),以避免出现明显的错误。

我尝试在“ setUpBeforeClass”方法中执行以下操作:

    LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
    cfg.useGL20 = true;
    cfg.width = 480;
    cfg.height = 320;
    cfg.resizable = true;
    LwjglApplication app = new LwjglApplication( new TestApplicationListener(), cfg);

并在tearDownAfterClass()中调用:

    Gfx.app.exit()

但是它确实创建了一个我不需要的窗口,并且当我需要的只是初始化文件处理时,似乎显得过大了。有没有更好的方法来初始化libGDX组件而不创建整个应用程序对象?谢谢。

编辑

回到上面(感谢Sam的评论),我意识到需要GL访问(需要加载资产),但是这种方法似乎行不通:图形库似乎没有初始化。GDX文档没有帮助。有什么线索吗?


阅读 231

收藏
2020-12-03

共1个答案

一尘不染

这个问题尚未得到解答,我很惊讶没有人指出无头后端,这对于这种情况是理想的。将此与您最喜欢的模拟库结合起来,您应该会很高兴。

public class HeadlessLauncher {
    public static void main(final String[] args) {
        final HeadlessApplicationConfiguration config = new HeadlessApplicationConfiguration();
        config.renderInterval = Globals.TICK_RATE; // Likely want 1f/60 for 60 fps
        new HeadlessApplication(new MyApplication(), config);
    }
}
2020-12-03