我正在尝试模拟单元测试的 Java3D 类,例如:
mock(VirtualUniverse.class);
或者
mock(Canvas3D.class);
不幸的是,VirtualUniverse(也被 Canvas3D 引用)有一个对 MasterControl 的静态引用,其中包括一个方法
static void loadLibraries(){
...
}
在模拟期间调用它并尝试加载外部库,这正是我想要避免的。
我想听听人们使用什么作为模拟的通用方法应用于使用 Java3D 框架的应用程序,特别是如果您找到了一种令人满意的处理 Universe 的方法。
更新:
问了这个问题后发生了几件事。一是我们更多地了解了 Java3D 和 JavaFX 的状态。Java3D 的工作似乎暂时停止,转而专注于 JavaFX。此外,此时 JavaFX 计划在 2011 年第三季度包含 Java API。由于我们现有的代码是基于场景图的,我四处寻找其他场景图范例工具,偶然发现了 jMonkeyEngine (jME),它似乎对我们很有效。
虽然 jME 的应用程序类更喜欢继承而不是组合(参见 com.jme3.app.SimpleApplication),但将委托器插入继承层次结构很容易,允许我以更支持 TDD 的方式创建我们自己的应用程序。此外,jME 团队在避免使用静态行为方面做得很好,这再次有助于为 UT 模拟组件。
因此,我接受 Zsolt 的回答是因为他认为代表团认为他有钱。