我在测试套件中遇到了一些问题,从 Byte Buddy 0.7.7 迁移到 1.0.2
这是一个简化的示例:
public class ReproBug {
@Test
public void test() {
ByteBuddyAgent.install();
new AgentBuilder.Default().type(nameStartsWith("test"))
.transform(new AgentBuilder.Transformer() {
@Override
public Builder<?> transform(Builder<?> builder, TypeDescription typeDescription) {
return builder.method(isDeclaredBy(typeDescription)).intercept(to(new Object() {
@RuntimeType
public void intercept(@SuperCall Callable<?> zuper, @Origin Method method) {
System.out.println("intercepting " + method.getName());
}
}));
}
}).installOnByteBuddyAgent();
MyClass.staticMethod();
}
}
代码MyClass
:
class MyClass {
public static void staticMethod() {
System.out.println("in staticMethod");
}
}
Byte Buddy 0.7.7 没有报告任何错误,但是在 1.0.2 中我得到了类似Cannot resolve type description for test.MyClass$auxiliary$dUGbkato
.
完整日志(来自 AgentBuilder.Listener): http://pastebin.com/ytsQR5bi
请注意,该方法被拦截。
然而,在我的一些测试中,我得到了两倍的拦截量,因为它拦截call
了辅助类的方法。