1

ここで奇妙な問題を考えています。たとえば、次のことを行うコードがサーバーにデプロイされているとします。

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

MyClass を変更せずに、invoke() がまったく呼び出されたかどうかについて、外部テストクラス (同じサーバー環境にデプロイされている) から知ることができるかどうか疑問に思っていましたか?

私は受け入れテストを作成しようとしていますが、これが可能かどうか疑問に思っていました (私の MyClass コードに触れることなく)

4

2 に答える 2

3

テストケースに関しては、PowerMockは静的メソッド呼び出しをインターセプトできます。

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

ただし、サーバー側のコードからは、AoP(特にaspectj)が最善の策です。そうすれば、実際にコードを変更する必要はなく(アスペクトクラスをコーディングするだけ)、アスペクトjウィーバーを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/

于 2012-07-27T04:31:11.753 に答える
0

AoPを使用してこれを行うことができると思います。私はそれを自分で使用したことはありませんが、メソッドが呼び出されたとき、印刷したり、ステートメントをログに記録したりするときに、ロギングメカニズムを作成できると思います。

于 2012-07-27T03:28:04.443 に答える