Spring BootのRESTControllerをJUnit4でテストする

Spring BootのRESTControllerをJUnit4でテストする

RESTControllerをJUnitでテストします。

JUnitでテストする際は、src/main/java配下、src/test/java配下は同一階層のパッケージにしておきます。

DemoControllerクラスに対して、テストクラスはDemoControllerTestクラスというように最後にTestを付けます。

DemoControllerTestクラスの中身は以下のような感じになります。

Spring4.3から@RunWith(SpringRunner.class)と書くように変わったようです。

@SpringBootTest()で良いですが、RESTControllerのテストの場合のみ@SpringBootTest(webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT)と記述します。

TestRestTemplateクラスを使用してGETやPOSTを実際に実行することができます。この際のポートはべた書きではダメで以下のように記述します。

getForObjectでGETのテストができます。

postForObjectでPOSTのテストができます。

Spring bootのテストではmockitoをデフォルトで使うようです。AssertJも使えました。

ヘッダ、リクエストボディを渡す

REST APIがPUTやPOSTの場合、リクエストボディがありますし、ヘッダ情報を渡したいケースもあると思います。

その場合、HttpHeaderクラスのインスタンスを生成します。

ヘッダ情報をaddかsetしたら次に、リクエストボディを作成します。

HttpEntityクラスのインスタンスを以下のように作成します。

URL作成します。

最後にTestRestTemplateクラスのインスタンスのメソッドを実行します。postForEntityメソッドはPOST用のメソッドです。

参考サイト:https://howtodoinjava.com/spring-boot2/testing/testresttemplate-post-example/

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA