问题
我正在使用 fitnesse 来运行一些自动化测试。有一个名为 TableTable 的类,如果对其进行增强,我可以做一些很酷的事情。我需要做的是改变这个类的方法 appendInstructions()
的作用。
因为 fitnesse 明确查找 TableTable 类,所以我不能简单地创建一个 TableTable 的子类并进行我所需的增强 - 我不能让 fitnesse 找到并使用我的自定义子类。
我目前的解决方案
我采用的临时解决方案是我借用了 TableTable 的源代码,将它添加到我的源代码树中与它在 fitnesse 的 jar 中相同的包下,并更改了它的代码以满足我的需要。我的代码的类文件出现在类路径中 fitnesse 的 jar 之前,因此我的更改得到了应用。
我想做什么
我不想完全隐藏 fitnesse 的 jar 中的 TableTable 类,而是只想在运行时重写该类的一个方法。是否有任何代码生成库(如 cglib)可以帮助我在运行时重写类并帮助我实现这一目标?
最佳答案
根据您需要更改的范围,您可以使用 Javassist至 modify the body of the method in question .有一个使用 Javassist 拦截/替换方法的教程 here .
关于java - 在运行时替换类中的方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9720833/