public class TestMain
{
public static void main(String[] args)
{
System.out.println(Name.getName());
}
}
class Name
{
public static String getName()
{
return "ORIGINAL";
}
}
$ java -cp build/libs/bciex.jar mycompany.myapp.TestMain
ORIGINAL
$ java -cp build/libs/bciex.jar -javaagent:build/libs/bciex.jar="mycompany.myapp.TestMain|getName|SOME_STRING" mycompany.myapp.TestMain
Agent loaded; will modify [getName] method of classes in [mycompany.myapp.TestMain] to return [SOME_STRING]
SOME_STRING
$
3条答案
按热度按时间tvmytwxo1#
你确定你试过bcel吗?我在这里创建了一个完全有效的示例。
ffx8fchx2#
您可以尝试添加
-javaagent
代理,它将使用类似asm或bcel的内容来修改Name
类,以便静态方法将返回另一个字符串。许多模拟测试框架(例如powermock或jmockit)都可以做到这一点。编辑:这里是一些示例代码,让你开始。这是一个javaagent,它可以修改给定的公共静态方法,该方法返回
String
返回另一个常量String
. 例如:6yt4nkrj3#
可以将参数传递到方法中