Замена вызова метода в классе во время выполнения - PullRequest
3 голосов
/ 15 марта 2012

Проблема
Я использую фитнес для запуска некоторых автоматических тестов.Существует класс TableTable, который, если его усовершенствовать, позволит мне сделать несколько классных вещей.Мне нужно изменить то, что делает метод appendInstructions() этого класса.

Поскольку фитнес явно ищет класс TableTable, я не могу просто создать дочерний класс TableTable с моими необходимыми улучшениями - я не могу заставить фитнес найти и использовать свой собственный дочерний класс.

Мойтекущее решение
Временное решение, которое я принял, заключается в том, что я позаимствовал исходный код TableTable, добавил его в свое исходное дерево в том же пакете, что и в jar-файле fitnesse, и изменил его код наудовлетворить мои потребности.Файлы классов моего кода появляются перед jar fitnesse в classpath, поэтому мои изменения забираются.

Что я пытаюсь сделать
Вместо того, чтобы полностью затенять класс TableTable в fitnessejar, я хочу переписать только один метод этого класса во время выполнения.Поможет ли какая-либо библиотека генерации кода (например, cglib) переписать класс во время выполнения и поможет мне достичь этого?

Ответы [ 2 ]

3 голосов
/ 15 марта 2012

В зависимости от того, насколько большими должны быть изменения, вы можете использовать Javassist до , чтобы изменить тело рассматриваемого метода .Существует руководство по перехвату / замене методов с использованием Javassist здесь .

3 голосов
/ 15 марта 2012

Похоже, вы должны взглянуть на JRebel .

...