问题
我正在使用fitnesse来运行一些自动化测试。有一个名为TableTable的类,如果增强它将允许我做一些很酷的事情。我需要做的是改变这个类的方法appendInstructions()
。
因为fitnesse显式查找TableTable类,所以我不能简单地使用我所需的增强功能创建TableTable的子类 - 我无法使fitnesse查找并使用我的自定义子类。
我目前的解决方案
我采用的临时解决方案是我借用了TableTable的源代码,将它添加到我的源代码树下,在fitnesse的jar下使用相同的包,并更改了代码以满足我的需要。我的代码的类文件出现在类路径中fitnesse的jar之前,所以我的更改被拾取了。
我正在尝试做什么
我没有在fitnesse的jar中完全隐藏TableTable类,而是想在运行时只重写该类的一个方法。任何代码生成库(比如cglib)都会帮助我在运行时重写类并帮助我实现这个目标吗?
答案 0 :(得分:3)
听起来你应该看看JRebel。
答案 1 :(得分:3)
根据您需要进行更改的范围,您可以使用Javassist到modify the body of the method in question。有一个关于使用Javassist here拦截/替换方法的教程。