SpringBoot がデータベース統合テストに EmbeddedDatabaseBuilder を使用する方法

SpringBoot がデータベース統合テストに EmbeddedDatabaseBuilder を使用する方法

SpringBoot アプリケーションを開発するとき、多くの場合、データベースと対話する必要があります。アプリケーションが実稼働環境で適切に動作することを確認するには、データベース統合テストを実行して、アプリケーションがデータベースと適切に対話できるかどうかをテストする必要があります。この記事では、SpringBootを使ったデータベース統合テストの方法を紹介しますEmbeddedDatabaseBuilder

ここに画像の説明を挿入

EmbeddedDatabaseBuilderの概念と使い方

EmbeddedDatabaseBuilderメモリ内に埋め込みデータベースを作成および管理するために Spring Framework によって提供されるクラスです。H2、HSQLDB、Derby、SQLite など、さまざまなデータベース タイプをサポートしています。を使用するとEmbeddedDatabaseBuilder、単体テスト、統合テスト、機能テスト用の組み込みデータベースを簡単に作成および破棄できます。

EmbeddedDatabaseBuilder組み込みデータベースを構成および管理するために、いくつかの方法が提供されています。一般的に使用されるいくつかの方法を次に示します。

  • setType:組み込みデータベースの種類を設定します。
  • setName:組み込みデータベース名を設定します。
  • addScript: SQLスクリプトファイルを追加します。
  • setScriptEncoding: SQL スクリプト ファイルのエンコードを設定します。
  • setDataSource: カスタムDataSource実装を設定します。

以下は、EmbeddedDatabaseBuilderH2 データベースを作成して SQL スクリプト ファイルを追加する方法を示す簡単な例です。

EmbeddedDatabase db = new EmbeddedDatabaseBuilder()
    .setType(EmbeddedDatabaseType.H2)
    .addScript("classpath:schema.sql")
    .build();

上記の例では、EmbeddedDatabaseBuilderを使用して H2 データベースを作成し、schema.sql初期化スクリプトとしてファイルを追加しました。

結合テストの概念と目的

ソフトウェア開発において、統合テストは、アプリケーションのさまざまなコンポーネント間の統合と相互作用をテストするために使用されるテスト方法です。統合テストは、通信エラー、インターフェイスの非互換性、依存関係の問題など、コンポーネント間の統合の問題を発見して解決するのに役立ちます。

SpringBoot アプリケーションでは、統合テストの目的は、アプリケーションのさまざまな部分が適切に動作し、他の外部コンポーネント (データベース、メッセージ キュー、RESTful API など) と正しく対話できることを確認することです。統合テストは、これらの問題を発見して修正し、アプリケーションが本番環境で安定して実行できるようにするのに役立ちます。

EmbeddedDatabaseBuilder を使用したデータベース統合テスト

データベース統合テストは、を使用するとEmbeddedDatabaseBuilder非常に簡単です。テスト クラスでオブジェクトを作成しEmbeddedDatabase、それをリポジトリまたはサービスに注入するだけです。以下は、データベース統合テストを実行する方法を示す例です。

1. テストケースを書く

ユーザー情報をクエリするための単純なリポジトリがあるとします。このテスト ケースでは、このリポジトリがデータベースと正しく対話できるかどうかをテストします。

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserRepositoryTest {
    
    

    @Autowired
    private UserRepository userRepository;

    @Test
    public void testFindById() {
    
    
        User user = new User(1L, "John", "[email protected]");
        userRepository.save(user);

        User result = userRepository.findById(1L);
        assertThat(result).isNotNull();
        assertThat(result.getName()).isEqualTo("John");
        assertThat(result.getEmail()).isEqualTo("[email protected]");
    }
}

上記のテスト ケースでは、@SpringBootTestアノテーションを使用してこれが統合テストであることを宣言し、 auto-configuration を使用しましたDataSourceこのメソッドではtestFindById、まずユーザー プロファイルをデータベースに追加します。次に、userRepository.findById(1L)メソッドを使用してユーザー情報をクエリし、クエリ結果が期待値と同じであることをアサートします。

2. 組み込みデータベースの構成

テスト ケースを実行する前に、組み込みデータベースを構成する必要があります。組み込みデータベースを作成するためのクラスを作成し@Configuration、Bean を宣言できます。DataSource以下は、H2 データベースの構成方法を示す例です。

@Configuration
public class TestDatabaseConfig {
    
    

    @Bean
    public DataSource dataSource() {
    
    
        return new EmbeddedDatabaseBuilder()
                .setType(EmbeddedDatabaseType.H2)
                .addScript("classpath:schema.sql")
                .build();
    }
}

上記の構成では、DataSourceBean を作成し、EmbeddedDatabaseBuilderH2 データベースの構築に使用しました。同時に、schema.sql初期化スクリプトとしてファイルも追加しました。

3. テストケースを実行する

これで、テスト ケースを実行する準備が整いました。テスト ケースを実行すると、SpringBoot は最初に構成クラスをロードし、次に組み込みデータベースを作成して、それをリポジトリに挿入します。次に、テスト ケースはこのリポジトリを使用してテストを行い、テスト結果が期待どおりであることを確認します。

要約する

この記事では、データベース統合テストにおける SpringBoot の使用方法を紹介しましたEmbeddedDatabaseBuilderEmbeddedDatabaseBuilderまず、結合テストの概念と使用法を紹介し、次に結合テストの概念と目的を説明します。EmbeddedDatabaseBuilder最後に、テスト ケースの作成、組み込みデータベースの構成、テスト ケースの実行など、統合テストの使用方法を示しました。

データベース統合テストを使用するとEmbeddedDatabaseBuilder、アプリケーションがデータベースと正しく対話できるかどうかを簡単にテストし、統合の問題を見つけて解決できます。これは、アプリケーションが本番環境で安定して動作することを保証するのに役立ちます。

おすすめ

転載: blog.csdn.net/2302_77835532/article/details/131625853