Mavenでビルドした時に発生したエラー②コンフィギュレーションクラスの指定

以下のようなエラーが出たので解決した。

java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

環境

  • Spring Boot: 2.3.3.RELEASE
  • STS4: 4.3.2.RELEASE
  • Maven: 3.6.1

エラー内容

以下はmaven packageを実行した時に発生したエラーです。

java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

Google翻訳で訳すと、「@SpringBootConfigurationが見つかりません。テストでは、@ContextConfigurationまたは@SpringBootTest(classes = …)を使用する必要があります。」となりました。

解決方法

@SpringBootTestclasses属性でコンフィギュレーションクラス(@SpringBootApplicationを付加したクラス)を指定します。

テストクラスが適切なパッケージに配置されていれば、わざわざ指定しなくても自動的に探し出して実行してくれるらしいのですがうまくいきませんでした。
そのため、下記の例のように@SpringBootTestを使用しているクラスに対してコンフィギュレーションクラスを指定しました。

@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = MagazineManagerApplication.class)
@AutoConfigureMockMvc
class LoginControllerTest {
 	// 省略
}

参考