前書き
普段、何気なくSpring Boot(Spring MVC)のテストを設計・実装してるのですが
初心「そういえば我々、今どんなTest構成なんだっけ?(特に、利用ブラウザ)」を忘れがち。
関連クラス辿ったので、備忘しておくもの。
前提
公式Doc1や公式Doc2に則って、自動構成に任せたMVC Testを書いていること。
すなわち、@WebMvcTest
周りを利用したテスト実装であること。
本題:Test構成の仔細
結局、MockMvcWebDriverAutoConfigurationが設定されている。
同Configurationクラスのコードはこちら。
実装より、以下2つの条件いずれも満たしていれば、同クラス配下のBean登録を試みる。
- ライブラリ
org.openqa.selenium.htmlunit.HtmlUnitDriver
が利用可能 - プロパティ
spring.test.mockmvc.webdriver.enabled=false
が明示されていない
Bean登録について条件と、概要は以下。
-
WebDriver
,MockMvcHtmlUnitDriverBuilder
いずれのBeanとも登録が無い場合MockMvcHtmlUnitDriverBuilder
をBean登録する。
その折に、browserVersion.CHROME
指定のLocalHostWebConnectionHtmlUnitDriverインスタンスを用いる。
判りやすく言えば「Selenium利用するHtmlUnit」となる。 -
WebDriver
は登録が無いが、MockMvcHtmlUnitDriverBuilder
はBean登録してる場合
HtmlUnitDriver
をBean登録する。
その折、MockMvcHtmlUnitDriverBuilder
を利用。
加えて、SecurityContextに従う必要あれば、設定済みExecutorをHtmlUnitDriver
に反映してくれる。
補足 : HtmlUnit(含:Selenium)設定に手を入れたい場合の流れ
まず初めに、WebDriver
やDriverBuilder
周りの、Configurer
やCustomizer
利用を考えるべし。
続いて、DriverBuilder
やHtmlUnitDriver
Beanを、自前で登録。