在这里思考一个奇怪的问题。例如,您在服务器上部署了执行以下操作的代码:
//GET request called when a URL is hit
public void gETCalled(){
MyClass.invoke();
}
想知道是否有可能从外部测试类(部署在同一服务器环境中)知道是否调用了 invoke() ,而无需修改 MyClass ?
我正在尝试编写验收测试,并想知道这是否可能(不接触我的 MyClass 代码)
在这里思考一个奇怪的问题。例如,您在服务器上部署了执行以下操作的代码:
//GET request called when a URL is hit
public void gETCalled(){
MyClass.invoke();
}
想知道是否有可能从外部测试类(部署在同一服务器环境中)知道是否调用了 invoke() ,而无需修改 MyClass ?
我正在尝试编写验收测试,并想知道这是否可能(不接触我的 MyClass 代码)
在测试用例方面,PowerMock 可以拦截静态方法调用。
http://code.google.com/p/powermock/wiki/MockStatic
但是,从服务器端代码来看,AoP(特别是 aspectj)将是您最好的选择。这样您就不必实际更改任何代码(只需编写一个方面类),并且只有在您想将 aspectj weaver 添加为 javaagent 时才可以启用它。
方面看起来像这样:
@Aspect
public class TrackMyClassInvoke {
@Before("execution(* MyClass.invoke())")
public void beforeInvoke() {
// do something to track it here
}
}
你需要确保在你的编织中包含 MyClass (我不会进入编织的完整过程,因为你可以在 aspectj 网站上找到所有这些)
我认为您可以使用AoP来执行此操作。我自己没有使用过它,但我相信它可以让您创建一个日志记录机制,您可以在其中执行某些操作,例如调用方法、打印或记录某些语句。