記事ディレクトリ
1. 問題のシナリオ
アイデアベースの springBoot プロジェクトを単体テストに使用すると、以下に示すような例外が発生します。
Test ignored.
java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test
2. エラーの理由
テスト クラスは実行時にスタートアップ クラスを見つけることができないため、エラーが報告されます。
3. 解決策
①プロジェクトにスタートアップクラスがあるか確認し、ない場合は速やかに追加してください。
正しいスタートアップ クラスのサンプル コードは次のとおりです。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//声明它为基于springboot的应用程序的启动类
@SpringBootApplication
public class springbootJpaApplication {
public static void main(String[] args) {
SpringApplication.run(springbootJpaApplication.class,args);
}
}
ps: スタートアップクラスのクラス名は気軽に書いても大丈夫ですが、有名な名前の命名規則を参考にすることをお勧めします
②スタートアップクラスを作成したが、テストクラスが配置されているパッケージがスタートアップクラスが配置されているパッケージと同じルートディレクトリにない場合
例: 私のプロジェクトでは、スタートアップ クラスが配置されているパッケージはcom.fcですが、テスト クラスはパッケージなしでproject/test/javaの直下に記述されています。
解決策:
1. テスト クラス [単体テストするクラス] をスタートアップ クラス [com.fc など] と同じディレクトリに配置します。
2. テストクラスをスタートアップクラスと同じパッケージに入れたくない場合は、テストクラスのアノテーションに @SpringBootTest(classes = {springbootJpaApplication.class}) を追加します。
コード例は次のとおりです。
@SpringBootTest(classes = {
springbootJpaApplication.class})
public class testJpa {
}
ps:中括弧は、あなたが自分で書いたテストクラスを反映しています。
上記の 2 つの解決策のいずれかを選択でき、効果は同等です。
トラブルシューティングと修正は成功しました! !!