gpt4 book ai didi

unit-testing - 有没有办法为 libGDX 应用程序创建集成测试?

转载 作者:行者123 更新时间:2023-12-04 11:34:23 25 4
gpt4 key购买 nike

如果问题重复,我深表歉意,但我找不到有关此的任何信息。

我知道我可以使用 JUnit 创建简单的单元测试,但我无法在 android/iOS 设备上运行它。如果我理解正确,我可以使用 Instrumented Unit Tests,但它们仅适用于 android 平台。在这种情况下,我无法从 libGDX 核心测试函数(我错了吗?)。所以,我很感兴趣,我怎样才能在设备上运行我的测试?

最佳答案

测试 libGDX 应用程序不是一个简单的话题,但是有了一个好的架构,它是可能的。关键点是将渲染部分与您要测试的业务逻辑分开。渲染总是需要一个 OpenGL 上下文,如果你试图在没有它的情况下运行它,就会中断。如果您不打算在 headless 构建服务器上运行它们,而只是在您的桌面上运行它们,您实际上可以编写需要 OpenGL 的测试。
话虽如此,libGDX 应用程序的测试主要集中在 HeadlessApplication 的使用上。这使您的依赖于 libGDX 的代码可以在您的测试环境中运行。如果你想在测试中开始整个游戏,你需要一个 headless 版本(这里是“MyGameHeadlessApplication”)。然后你可以像这样初始化它:

    private MyGameHeadlessApplication application;

@Before
public void setUp() throws Exception {
HeadlessApplicationConfiguration config = new HeadlessApplicationConfiguration();
config.renderInterval = 1F / 30F;
application = new MyGameHeadlessApplication();
new HeadlessApplication(this.application , config);
}
为了测试依赖于 libGDX 的较小部件,有一个非常方便的库可用: gdx-testing project包含一个 GdxTestRunner,它将您的测试包装在 HeadlessApplication 中并允许您执行以下操作(来自 gdx-testing 示例):
@RunWith(GdxTestRunner.class)
public class MySuperTestClass {
@Test
public void bestTestInHistory() {
// libgdx dependent code runs here
}
}
最重要的是,我的 Assets 文件夹有一个小问题,首先在测试中找不到。我通过设置 workingDir 解决了这个问题用于我的 build.gradle 中的测试.当然,请确保拥有所有需要的依赖项(如果您在测试中需要,还可以使用 box2d)。在我的设置中,我在“核心”项目中进行了所有测试:
project(":core") {
apply plugin: "java"

test {
project.ext.assetsDir = new File("./assets")
workingDir = project.ext.assetsDir
}

dependencies {
testCompile "com.badlogicgames.gdx:gdx-backend-headless:$gdxVersion"
testCompile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
testCompile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
// ... more dependencies here ...
另见 Unit-testing of libgdx-using classes

关于unit-testing - 有没有办法为 libGDX 应用程序创建集成测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42252209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com