Я пытаюсь издеваться над классами Java3D для модульных тестов, например:
mock(VirtualUniverse.class);
or
mock(Canvas3D.class);
К сожалению, VirtualUniverse (на который также ссылается Canvas3D) имеет статическую ссылку на MasterControl, которая включает метод
static void loadLibraries(){
...
}
который вызывается во время насмешек и пытается загрузить внешние библиотеки, чего я и пытаюсь избежать.
Я хотел бы услышать, что люди использовали в качестве общего подхода к насмешкам, применяемому к приложениям, использующим среду Java3D, особенно если вы нашли удовлетворительный подход к работе с юниверсами.
Обновлять:
Пара вещей произошла после того, как я задал этот вопрос. Во-первых, мы узнали больше о состоянии Java3D и JavaFX. Похоже, что работа над Java3D на данный момент остановлена, чтобы сосредоточиться на JavaFX. Кроме того, в настоящее время в JavaFX планируется включить Java API в третьем квартале 2011 года. Поскольку наш существующий код основан на графе сцен, я искал другие инструменты парадигмы графа сцен и наткнулся на jMonkeyEngine (jME), который, похоже, хорошо подойдет для нас.
В то время как класс приложения jME предпочитает наследование композиции (см. com.jme3.app.SimpleApplication), было достаточно легко вставить делегатор в иерархию наследования, что позволило мне создать собственное приложение в более удобной для TDD манере. Кроме того, команда jME хорошо избегает использования статического поведения, что снова помогает в попытках смоделировать компоненты для UT.
Итак, я принимаю ответ Жолта на том основании, что он думает о деньгах с делегацией.