前書き
普段、何気なく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やHtmlUnitDriverBeanを、自前で登録。