統合テストで ShrinkWrap を使用して Jetty サーバーを起動しています。
問題:
テスト用の jetty-server を起動して、コントローラーのモックアップを作成すると、モックアップが機能しません! JMockit - AppClassLoader、Jetty - WebAppClassLoader.
質問:
モッキングをうまく機能させるには?
PS 私は、 -javaagent:jmockit.jarオプションが役立つかもしれないとグーグルで調べました。しかし、そうではありません。1.7 JDK ベースの Maven プロジェクトに必要ですか?
添加:
私の問題を説明するためにデモを書きました。参照で見つけることができます。
私のデモについて:
10 ストロークのコードを除けば、それらのプロジェクトと同じです。問題を説明するために、JMockit と 1 つのモックのみを追加しました。
JettyDeploymentIntegrationUnitTestCase.requestWebappメソッドが表示されるはずです。これらのメソッドでは、機能しないモックを作成します。
Jetty と JMockit が兄弟のクラスローダーによってクラスをロードすることを確認できるため、JMockit は単に Jetty のクラスを認識しません。
URLClassLoader
|
|-Launcher$AppClassLoader
|-WebAppClassLoader