6

最近、MVC テスト用の Spring プロジェクトspring-test-mvc を発見しました。これは素晴らしいツールであり、今後さらに活用する予定です。

ただし、Jenkins CI で問題があることに気付きました。問題は、MVC 統合テストがローカルで合格し、Jenkins CI ジョブでも、Jenkins の Sonar プラグインの実行で問題が発生することです。この場合、私が試みた「.andExpect()」メソッドで行われたすべてのアサートは失敗しました。はい、Sonar プラグインを使用しない場合は合格です。

例えば

this.mockMvc.perform(get("/someController/some.action").param("someParam", "someValue"))
    .andExpect(status().isOk())
    .andExpect(content().type(MediaType.APPLICATION_JSON))
        .andExpect(request().sessionAttribute("someAttribute", notNullValue()));

上記のテストでは、コンテンツ タイプとセッション属性のアサーションが失敗しています。何か案は?前もって感謝します。

4

2 に答える 2

0

私も同じ問題に直面しました。Cobertura jar のバージョンを最新にアップグレードしました。この変更により、JUnit テストケースが Jenkins だけでなくローカルでも実行されるようになりました

于 2016-07-12T19:03:21.360 に答える
0

この問題は、spring-mvc の親切な人々によって解決されました。詳細については、提供されたリンクを参照してください。要するに、私の場合、Sonar はカバレッジ テストに Cobertura を使用します。

Cobertura はインターフェースHasBeenInstrumentedを追加し、そのためクラスは代わりに JDK 動的プロキシとして装飾されます。これは、Cobertura マーカー インターフェースであるためあまり役に立たない 1 つのインターフェースを持つ合成プロキシ クラスを意味します。その結果、コントローラは決してアノテーションを適切に検出できません。

問題は要素に追加proxy-target-class="true"することで解決されます<tx:annotation-driven>

于 2012-05-16T07:40:07.103 に答える