2

PowerMockライブラリからクラスの静的呼び出しをモックアウトすることが、または他のライブラリで可能かどうか疑問に思っています。そのサードパーティ ライブラリのクラスは、rt.jar のクラスの 1 つを呼び出します。その return のカスタム実装を返したいと思いTypeます。テストコードの外でこれをやろうとしています。

そうでなければ、そのライブラリからいくつかのクラスを拡張し、いくつかの実装を置き換える必要がありました。誰かが前にこのようなことをしたことがありますか?

4

2 に答える 2

1

はい、可能です。たとえば、PowerMock.mockStatic()orを使用してPowerMock.mockStaticPartial()、1 つのメソッドのみをモックする場合にのみ使用できます。

PowerMock のホームページに非常に優れたチュートリアルがあります。

SO に例を投稿しました。

[編集] ただし、本番コードでそのような魔法を実行したい場合は、テスト フレームワークを使用しないことをお勧めします。多分Groovyはそれを助けることができます.Groovyでは実行時にクラス(JDKクラスでさえも)を操作することが可能であり、それは(私が思うに)JVMの上のより薄い層です.

于 2013-03-11T09:26:09.183 に答える
0

一般的に言えば、そのような筋金入りのスタブを行うのは本当に悪い考えです (それはあなたが説明したことを嘲笑しているわけではありません)。このライブラリに小さな抽象化を構築して、何を返したいかを完全に制御できるようにします。PowerMock の一部の機能をテスト外で使用することは可能ですが、これは簡単なことではありません。ここに、本当に必要な場合に役立つ大まかな説明があります: https://groups.google.com/d/msg/powermock/SMDMe-y6fLg/1HF0TsGOqTIJ

とにかく、私はそれをすることをお勧めしません。

于 2013-03-11T09:30:55.403 に答える