我正在尝试对我的libgdx应用程序的core
包进行单元测试。
最佳方法是如何模拟ShaderProgram
以便可以测试根类?
给定以下Libgdx测试运行程序的初始化:
init {
val conf = HeadlessApplicationConfiguration()
HeadlessApplication(this, conf)
Gdx.gl = mock(GL20::class.java)
Gdx.gl20 = mock(GL20::class.java)
Gdx.gl30 = mock(GL30::class.java)
Gdx.graphics = mock(Graphics::class.java)
`when`(Gdx.graphics.height).thenReturn(dimensions)
`when`(Gdx.graphics.width).thenReturn(dimensions)
}
需要测试的函数位于一个 Application Listener
的子类中。
override fun create() {
...
stage = Stage(ScreenViewport())
...
}
当Stage尝试编译着色器时,会在其中发生错误。
例如,在com.badlogic.gdx.graphics.g2d
中的SpriteBatch.java
文件中。
ShaderProgram shader = new ShaderProgram(vertexShader, fragmentShader);
if (shader.isCompiled() == false) throw new IllegalArgumentException("Error compiling shader: " + shader.getLog());
shader.isCompiled()
看起来对于一个 HeadlessApplication
总是返回 false。