java.lang.NoSuchMethodError:JockでMockitoを使用しているときのjavax.servlet.http.HttpServletRequest.isAsyncStarted()

スラブ:

TDDで足を濡らそうとしています。MockitoをMockMvcおよびJunitと組み合わせて使用​​して、コントローラーの単体テストケースを作成しようとしています。

しかし、実行時エラーが発生してテストが失敗します。最初は、の検索に失敗したため、セットアップでMockMvcインスタンスを初期化するときに問題に直面していましたjavax.servlet.SessionCookieConfig

これを解決するには、javax.servletAPIをダウンロードしてプロジェクトビルドパスに構成しますが、

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted()

perform()MockMvcインスタンスで使用中

互換性のないサーバーservlet-apiとjavax.servlet apiが原因で発生していると思うので、この種の依存関係をどうすればいいのか誰にも教えてもらえますか

編集:私はユニットテストに使用しているコードを投稿していますが、念のため:

@RunWith(MockitoJUnitRunner.class)
public class MyControllerTest {

    @InjectMocks
    private MyController myController = new MyController();

    @Mock
    private MyService myService = new MyServiceImpl();

    private MockMvc mockMvc;

    @Before
    public void setUp(){
        this.mockMvc = MockMvcBuilders.standaloneSetup(myController).build();
    }

    @Test
    public void testList() throws Exception{
        A a = new A();
        a = createMockClassA();

        Mockito.when(myService.getServiceForA(Mockito.anyMapOf(String.class, String.class))).thenReturn(a);

        MvcResult result = this.mockMvc.perform(get("/somePath/")).param("someExpectedParam","value").andReturn(); 

        System.out.println(result.getResponse().getContentAsString());

    }



    private static A createMockClassA(){
        A a = new A();
        a.setId(i);
        a.setTitle("mock-" + i);
        return a;
    }
}
イェンス・シャウダー:

これは、クラスパスに間違ったバージョンのサーブレットAPIがあるように聞こえます。

isAsyncStartedAPIにいつ追加されたかを確認し、クラスパスで参照するものが少なくともそのバージョン以上であることを確認してください。

「間違った」クラスバージョンがどこから来ているかを見つけるために、

-verbose:class

Javaの引数。ロードされたすべてのクラスと、それらがロードされた理由を正しく覚えている場合は、それがリストされます。詳細については、http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.htmlを参照してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ