JUnit(SpringJUnit)のTips
JUnit(SpringJUnit)のTipsを随時更新していきます。
SpringJUnit4ClassRunner 対 SpringRunner
@RunWithの指定はSpringJUnit4ClassRunnerとSpringRunnerがありますが、機能的には全く一緒のため、名前が短いSpringRunnerがベターです。
Spring 4.3 テスト関連の主な変更点 - Qiita
Spring 4.3から、SpringJUnit4ClassRunnerの別名クラスとしてSpringRunnerクラスが追加されます。名前が短くてナイスです :thumbsup: 利用できる機能はSpringJUnit4ClassRunnerと全く一緒で、SpringJUnit4ClassRunnerも引き続き利用可能です。
ControllerテストのNestedServletException
ControllerのテストでControllerが例外をthrowした場合、NestedServletExceptionに例外がラップされて再throwされます。
SystemExceptionResolverを有効にしていないため、例外ハンドリングされずにNestedServletExceptionがサーブレットコンテナに通知される。 NestedServletExceptionのgetCauseメソッドにより取得された例外から、Controllerで期待した例外がthrowされていることを検証する。
@Valueのついたprivate変数の設定
テスト対象クラスの@Valueのついたprivate変数に値を設定する方法は以下の2つがあります。
- ReflectionTestUtils.setField()を使う
- @SpringBootTestでテストプロパティを読み込ませる