rest-assured について
Java HTTP API の REST Assured テスト向けクイックリファレンススキルです。リクエスト、アサーション、認証、トラブルシューティングを扱います。
主な機能
- 01GET と POST のリクエスト例
- 02ステータスと本文のアサーション
- 03Bearer と Basic 認証
- 04Spring Boot テスト設定
- 05よくある問題の調査
活用シーン
- 01Java API エンドポイントのテスト
- 02ステータスと JSON フィールドの確認
- 03認証付きリクエストの検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ claude-dev-suite/ claude-dev-suite --skill rest-assuredインストール後、Claude Code で/rest-assuredを入力して読み込まれたか確認します。
詳細
REST Assured - クイックリファレンス
詳細な知識:テクノロジーに
rest-assuredを指定してmcp__documentation__fetch_docsを使用すると、包括的なドキュメントを参照できます。
このスキルを使用しない場合
- ユニットテスト - 分離されたテストには Mockito と
junitを使用してください - E2E ブラウザーテスト - Selenium または Playwright を使用してください
- WebSocket テスト - 専用の WebSocket テストツールを使用してください
- Java 以外のプロジェクト - 言語固有の HTTP クライアントを使用してください
- GraphQL API - GraphQL 専用のテストツールを検討してください
基本パターン
GET リクエスト
given()
.baseUri("http://localhost:8080")
.contentType("application/json")
.when()
.get("/api/v1/users/1")
.then()
.statusCode(200)
.body("name", equalTo("John"));
POST リクエスト
given()
.contentType("application/json")
.body("""
{"name": "John", "email": "[email protected]"}
""")
.when()
.post("/api/v1/users")
.then()
.statusCode(201)
.body("id", notNullValue());
Spring Boot との統合
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class UserApiTest {
@LocalServerPort
private int port;
@BeforeEach
void setUp() {
RestAssured.port = port;
}
@Test
void shouldGetUsers() {
given()
.when().get("/api/v1/users")
.then().statusCode(200);
}
}
認証
// Bearer Token
given().header("Authorization", "Bearer " + token)
// Basic Auth
given().auth().basic("user", "pass")
よく使われる Hamcrest マッチャー
| マッチャー | 用途 |
|---|---|
equalTo(value) | 完全一致 |
notNullValue() | null ではない |
hasSize(n) | コレクションのサイズ |
containsString(str) | 文字列を含む |
アンチパターン
| アンチパターン | 問題点 | 解決策 |
|---|---|---|
| ベース URI をハードコードする | 環境間で移植できない | RestAssured.baseURI または設定を使用する |
| contentType を設定しない | リクエストが失敗したり、誤って解釈されたりする可能性がある | POST/PUT では常に contentType を設定する |
| ステータスコードを無視する | エラーが検出されない | 常にステータスコードを検証する |
| パスパラメーターを使用しない | 読みにくく、エラーが起きやすい | {id} プレースホルダーを使用する |
| 1 つのテストでテストしすぎる | デバッグが難しい | テストごとにエンドポイントまたはシナリオを 1 つにする |
| 認証をテストしない | セキュリティ上の不備が生じる | 認証ヘッダーとトークンをテストする |
| レスポンススキーマを検証しない | API コントラクトに違反する | JSON スキーマ検証を使用する |
トラブルシューティング(クイックリファレンス)
| 問題 | 考えられる原因 | 解決策 |
|---|---|---|
| "Connection refused" | サーバーが起動していない | サーバーを起動し、ポートを確認する |
| "Expected status 200 but was 500" | API エラーまたはリクエストの誤り | サーバーログを確認し、リクエストボディを検証する |
| "Cannot deserialize JSON" | コンテンツタイプまたはボディ形式が正しくない | Content-Type ヘッダーを確認し、JSON を確認する |
| 認証に失敗する | トークンがない、または正しくない | Authorization ヘッダーを確認する |
| タイムアウト | API の応答が遅い、またはネットワークに問題がある | タイムアウトを延長するか、パフォーマンスを調査する |
| "Path not found" | URL またはメソッドが正しくない | エンドポイントの存在を確認し、HTTP メソッドを確認する |
リファレンスドキュメント
コメント
Markdown 対応