java.lang.IllegalStateException @SpringBootConfiguration コード エラーが見つかりません


ここに画像の説明を挿入


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 つの解決策のいずれかを選択でき、効果は同等です。

ここに画像の説明を挿入

トラブルシューティングと修正は成功しました!

おすすめ

転載: blog.csdn.net/siaok/article/details/131421575