gpt4 book ai didi

Java : know when a method is called

转载 作者:行者123 更新时间:2023-11-29 05:57:02 27 4
gpt4 key购买 nike

想到这里有个奇怪的问题。例如,假设您在服务器上部署了执行以下操作的代码:

//GET request called when a URL is hit
public void gETCalled(){
MyClass.invoke();
}

想知道是否有可能在不修改 MyClass 的情况下从外部测试类(部署在同一服务器环境中)知道是否调用过 invoke() ?

我正在尝试编写验收测试并且想知道这是否可能(不触及我的 MyClass 代码)

最佳答案

在测试用例方面,PowerMock可以拦截静态方法调用。

http://code.google.com/p/powermock/wiki/MockStatic

但是,从服务器端代码来看,AoP(尤其是 aspectj)将是您的最佳选择。这样您就不必实际更改任何代码(只需编写方面类的代码),并且仅当您想将 aspectj 织入程序作为 javaagent 添加时才可以启用它。

方面看起来像这样:

@Aspect
public class TrackMyClassInvoke {
@Before("execution(* MyClass.invoke())")
public void beforeInvoke() {
// do something to track it here
}
}

你需要确保在你的编织中包含 MyClass(我不会进入编织的完整过程,因为你可以在 aspectj 网站上找到所有这些)

http://www.eclipse.org/aspectj/

关于Java : know when a method is called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11680256/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com