java - 在运行时替换类中的方法调用

标签 java fitnesse

问题
我正在使用 fitnesse 来运行一些自动化测试。有一个名为 TableTable 的类,如果对其进行增强,我可以做一些很酷的事情。我需要做的是改变这个类的方法 appendInstructions() 的作用。

因为 fitnesse 明确查找 TableTable 类,所以我不能简单地创建一个 TableTable 的子类并进行我所需的增强 - 我不能让 fitnesse 找到并使用我的自定义子类。

我目前的解决方案
我采用的临时解决方案是我借用了 TableTable 的源代码,将它添加到我的源代码树中与它在 fitnesse 的 jar 中相同的包下,并更改了它的代码以满足我的需要。我的代码的类文件出现在类路径中 fitnesse 的 jar 之前,因此我的更改得到了应用。

我想做什么
我不想完全隐藏 fitnesse 的 jar 中的 TableTable 类,而是只想在运行时重写该类的一个方法。是否有任何代码生成库(如 cglib)可以帮助我在运行时重写类并帮助我实现这一目标?

最佳答案

根据您需要更改的范围,您可以使用 Javassistmodify the body of the method in question .有一个使用 Javassist 拦截/替换方法的教程 here .

关于java - 在运行时替换类中的方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9720833/

相关文章:

automated-tests - 自动化测试失败: how to distinguish known and newly introduced bugs?

java - 在Java中使用Slim解析Fitnesse Test Context.txt文件

fitnesse - 为什么选择健身/健身?

testing - Fitnesse - 我们可以拆分一个依赖于很多值但没有中间结果的大表吗?

java - 如何让两个子类在游戏中相互通信

java - 如何估计验证时间

java - 使用 Java 进行 SQL 插入

java - Google 地理编码 API 返回非法访问错误

java - 这是java教程中的错字吗?

java - 为 Fitnesse 输出方法提供参数?