Showing posts with label RestDocs. Show all posts
Showing posts with label RestDocs. Show all posts

Tuesday, June 13, 2023

Springboot2 Restdocsで「java.lang.NoSuchMethodException: java.util.List.()」エラーを3分で解決する方法

Restdocsで"java.lang.NoSuchMethodException"エラーを解決する

RestdocsはREST APIのテストに役立つツールですが、使用するのは複雑で時間がかかることがあります。最近、Restdocsを使っているときに"java.lang.NoSuchMethodException: java.util.List.<init>()"というエラーに遭遇しました。このエラーは、パラメータとしてリストを受け取っているコントローラーで発生しました。

解決策を探す

このエラーを解決しようと多くの資料を検索しましたが、明確な解決策を見つけるのは難しかったです。しかし、エラーを詳しく分析することで解決策を見つけることができました。

解決策

解決策は、パラメータとして受け取るコントローラーでリストを配列に変更することです。つまり、以下の変更を行うとエラーが解消されます。

// Before
public String getSomething(List<String> stringList) {

}

// After
public String getSomething(String[] stringArray) {

}

根本的な原因を理解する

このエラーの根本的な原因は、webMvcTestがリストを正しく認識できないことです。Spring Bootの自動設定は非常に便利ですが、このような状況では混乱を招くことがあります。

結論

この記事が、Restdocsを使用している際にエラーに遭遇した方々の助けになれば幸いです。

How to Fix Spring Boot Restdocs java.lang.NoSuchMethodException: java.util.List.() Error

Resolving "java.lang.NoSuchMethodException" Error in Restdocs

Restdocs is a valuable tool for testing REST APIs, but using it can sometimes be intricate and time-consuming. Recently, I came across the error "java.lang.NoSuchMethodException: java.util.List.<init>()" while utilizing Restdocs. This error surfaced in the controller where I was receiving a list as a parameter.

Seeking the Solution

I sifted through a plethora of resources in an attempt to rectify this error, but a clear solution was difficult to find. However, I managed to find a solution by carefully analyzing the error.

The Solution

The resolution is to modify the list to an array in the controller that receives it as a parameter. In other words, implementing the following changes will mitigate the error.

// Before
public String getSomething(List<String> stringList) {

}

// After
public String getSomething(String[] stringArray) {

}

Understanding the Root Cause

The root cause of this error is that webMvcTest cannot correctly identify the List. While Spring Boot's auto-configuration is highly convenient, it can sometimes lead to confusion in scenarios like this one.

Conclusion

I hope this article will be beneficial for those who are grappling with errors while using Restdocs.

Tuesday, December 11, 2018

Spring Boot Restdocs 테스트 실행시 오류 해결 - java.util.List.()

Restdocs에서 "java.lang.NoSuchMethodException: java.util.List.<init>()" 오류 해결 방법

Restdocs는 REST API를 테스트하는 데 유용한 도구이지만, 사용법이 복잡하고 번거로운 면이 있습니다. 최근에 Restdocs를 사용하면서 "java.lang.NoSuchMethodException: java.util.List.<init>()" 오류를 만났습니다. 이 오류는 컨트롤러에서 파라미터로 리스트를 받는 부분에서 발생했습니다.

이 오류를 해결하기 위해 많은 자료를 검색했지만, 명확한 해결 방법을 찾을 수 없었습니다. 하지만 계속해서 오류를 분석하던 중, 해결 방법을 찾을 수 있었습니다.

해결 방법은 컨트롤러에서 파라미터로 받는 리스트를 배열로 변경하는 것입니다. 즉, 다음과 같이 변경하면 오류가 해결됩니다.


// Before
public String getSomething(List<String> stringList) {

}

// After
public String getSomething(String[] stringArray) {

}

이 오류의 원인은 webMvcTest에서 List를 제대로 찾지 못하기 때문입니다. 스프링 부트의 자동 설정은 매우 편리하지만, 이런 경우에 조금 헷갈리게 되는 상황이 발생합니다.

이 글이 Restdocs를 사용하면서 오류를 겪고 있는 분들에게 도움이 되기를 바랍니다.