gpt4 book ai didi

opengl - 在 headless (headless)LibGDX单元测试中创建纹理

转载 作者:行者123 更新时间:2023-12-04 07:37:42 27 4
gpt4 key购买 nike

我正在使用LibGDX headless backend运行jUnit测试。这在某些测试中效果很好,但是如果我尝试创建new Texture('myTexture.png');,则会收到NullPointerException。确切的错误是:

java.lang.NullPointerException
at com.badlogic.gdx.graphics.GLTexture.createGLHandle(GLTexture.java:207)

为了简单起见,我创建了一个只加载纹理就不做其他事情的方法:

public class TextureLoader {
public Texture load(){
return new Texture("badlogic.jpg");
}
}

然后,我的测试类如下所示:

public class TextureTest {

@Before
public void before(){
final HeadlessApplicationConfiguration config = new HeadlessApplicationConfiguration();
new HeadlessApplication(new ApplicationListener() {
// Override necessary methods
...
}, config);
}

@Test
public void shouldCreateTexture() {
TextureLoader loader = new TextureLoader();
assertNotNull( loader.load() );
}
}

此方法在我的实际应用程序中正常工作,但在单元测试中却无效。

如何使用 HeadlessApplication类加载纹理?

最佳答案

模拟Gdx.gl可以帮助我在创建纹理时解决此NullPointerException:

import static org.mockito.Mockito.mock;

...

Gdx.gl = mock(GL20.class);

我将其与GdxTestRunner一起使用,请参见 https://bitbucket.org/TomGrill/libgdx-testing-sample

public GdxTestRunner(Class<?> klass) throws InitializationError {
super(klass);
HeadlessApplicationConfiguration conf = new HeadlessApplicationConfiguration();
new HeadlessApplication(this, conf);
Gdx.gl = mock(GL20.class); // my improvement
}

关于opengl - 在 headless (headless)LibGDX单元测试中创建纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25612660/

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