- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试对 core
进行单元测试我的 libgdx 应用程序包。
模拟 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())
...
}
SpriteBatch.java
来自
com.badlogic.gdx.graphics.g2d
,
ShaderProgram shader = new ShaderProgram(vertexShader, fragmentShader);
if (shader.isCompiled() == false) throw new IllegalArgumentException("Error compiling shader: " + shader.getLog());
shader.isCompiled()
对于
HeadlessApplication
似乎总是返回 false .
最佳答案
由于到目前为止没有答案,我想分享我目前的知识/意见:
首先,我们需要问一个问题:我们甚至可以为 GUI 编写单元测试吗?如果您想要深入的答案,请查看 this question .总结:您可以通过从帧缓冲区计算哈希值来对您的 GUI 进行单元测试,但一般建议是将尽可能多的逻辑移出您的 GUI,并且根本不要对您的 GUI 进行单元测试。除此之外,我和大多数运行代码的服务器都没有对 OpenGL 的硬件支持。假设我们不想为软件渲染烦恼,那么对 GUI 本身进行单元测试是没有选择的。
基于这些信息,我认为我的逻辑与我的 GUI 分离得不够好。但是当进一步研究 scene2d 和大量教程时,很明显,scene2d 希望您通过设计将代码的逻辑和 GUI 部分结合起来,参见 this question以供引用。
假设您同意scene2d 很难将您的逻辑和GUI 分开的观点,我们现在正面临op 的问题,而常见的解决方案并不适用。
在我看来,libGDX 的所有元素都应该与 HeadlessBackend 完全兼容,这不是 libGDX 的设计缺陷。到目前为止,我想出的唯一解决方法是在需要时模拟 SpriteBatch 并将其传递给舞台:
val stage = Stage(myViewport, if (isHeadless) mock(SpriteBatch::class.java) else SpriteBatch())
关于unit-testing - 通过 HeadlessApplication 调用 ShaderProgram(例如 Stage)的单元测试 Libgdx 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51728471/
我的主要语言是法语,我会尽力而为。 我尝试了解着色器,但无法找到我的着色器无法正常工作的原因。我使用带有 2 个 VBO 的 VAO 进行绘制。一个用于顶点,另一个用于索引。我的对象渲染良好,但我的着
我正在尝试从源代码运行 python 应用程序,它具有: from shader import ShaderProgram,ShaderCode 我不知道要下载+安装什么才能获得“着色器”。它非常不具
我在使用 1.1 很长时间后才开始使用 Cocos2d 3.0。 我想测试着色器并查找了一些教程。 所有教程似乎都使用 CCSprite 属性“shaderProgram”。 当我这样尝试时: ren
我正在尝试对 core 进行单元测试我的 libgdx 应用程序包。 模拟 ShaderProgram 的最佳方法是什么?这样可以测试根类? 鉴于 Libgdx 测试运行程序的以下初始化, init
我是一名优秀的程序员,十分优秀!