Tam*_*ier 7 integration-testing unit-testing libgdx
如果问题重复,我很抱歉,但我找不到任何有关此问题的信息.
我知道我可以使用JUnit来创建简单的单元测试,但是我不能在android/iOS设备上运行它.如果我理解正确,我可以使用仪表单元测试,但它们仅适用于Android平台.在这种情况下,我无法测试libGDX核心的功能(我错了吗?).所以,我很感兴趣,我如何在设备上运行我的测试?
测试 libGDX 应用程序并不是一个简单的话题,但只要有良好的架构,这是可能的。关键点是将渲染部分与要测试的业务逻辑分开。渲染始终需要 OpenGL 上下文,如果您尝试在没有 OpenGL 上下文的情况下运行它,渲染就会中断。如果您不打算在无头构建服务器上运行测试,而只是在桌面上运行,那么您实际上可以编写需要 OpenGL 的测试。
话虽这么说,libGDX 应用程序的测试主要集中在HeadlessApplication使依赖于 libGDX 的代码可以在测试环境中运行的使用上。如果您想在测试中启动整个游戏,您需要它的无头版本(此处为“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);
}
Run Code Online (Sandbox Code Playgroud)
为了测试依赖于 libGDX 的较小部件,有一个非常方便的库可用:gdx-testing 项目包含一个 GdxTestRunner,它将您的测试包装在 a 中HeadlessApplication,并允许您执行类似以下操作(来自 gdx-testing 示例):
@RunWith(GdxTestRunner.class)
public class MySuperTestClass {
@Test
public void bestTestInHistory() {
// libgdx dependent code runs here
}
}
Run Code Online (Sandbox Code Playgroud)
最重要的是,我的资产文件夹有一个小问题,首先在测试中无法找到该文件夹。我通过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 ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |