SpringBoot が JPA 統合テストに TestEntityManager を使用する方法
序章
開発プロセスでは、JPA は一般的に使用される永続化フレームワークの 1 つであり、オブジェクトをデータベースにマッピングし、データベースを操作するための一連の API を提供するのに役立ちます。JPA を開発およびテストする場合、データのセキュリティと再現性を確保するために、実際のデータベースの変更を避けるために、通常、いくつかのメモリ データベース (H2、HSQLDB など) を使用します。ただし、インメモリ データベースを使用するだけでは、実環境でのデータ操作を完全にシミュレートすることはできず、アプリケーションの正確性と堅牢性を確認するための統合テストも行う必要があります。
TestEntityManager は Spring Framework によって提供されるテスト フレームワークで、JPA 統合テストに役立ちます。この記事では、JPA 統合テストに TestEntityManager を使用する方法について説明します。
環境整備
JPA 統合テストを開始する前に、次の環境を準備する必要があります。
- JDK 8以降
- メイビン
- SpringBoot 2.x 以降
プロジェクトを作成する
まず、SpringBoot プロジェクトを作成する必要があります。コマンドラインで次のコマンドを実行します。
mvn archetype:generate -DgroupId=com.example -DartifactId=jpa-test-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
次に、次の依存関係をプロジェクトの pom.xml ファイルに追加します。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
これらの依存関係は、SpringBoot ベースの JPA アプリケーションを作成し、TestEntityManager 依存関係を追加するのに役立ちます。
テストケースを書く
プロジェクト内にテスト クラスを作成し、そのクラス内にテスト ケースを記述します。たとえば、UserRepository クラスを作成し、このクラスのメソッドをテストするテスト ケースを作成できます。
@RunWith(SpringRunner.class)
@DataJpaTest
public class UserRepositoryTest {
@Autowired
private TestEntityManager entityManager;
@Autowired
private UserRepository userRepository;
@Test
public void testFindById() {
User user = new User();
user.setName("John Doe");
user.setAge(30);
entityManager.persist(user);
entityManager.flush();
Optional<User> result = userRepository.findById(user.getId());
assertThat(result.isPresent()).isTrue();
assertThat(result.get().getName()).isEqualTo("John Doe");
assertThat(result.get().getAge()).isEqualTo(30);
}
}
上記のコードでは、TestEntityManager クラスを使用してメモリ データベースを操作し、assertThat メソッドを使用して返された結果が期待どおりかどうかをアサートします。
クラスに @RunWith(SpringRunner.class) アノテーションを使用して、Spring Test が提供するテスト ランナーを使用してテスト ケースを実行するように JUnit に指示していることに注意してください。同時に、@DataJpaTest アノテーションを使用して、軽量 Spring アプリケーションを開始し、JPA 関連のコンポーネントを自動的に構成するように Spring Boot に指示しました。
テストケースを実行する
テスト ケースを作成した後、次のコマンドを使用してテストを実行できます。
mvn test
テストの実行が完了すると、コンソールにテスト結果が表示されます。
要約する
この記事では、JPA 統合テストに TestEntityManager を使用する方法について説明しました。まず、必要な環境を準備し、SpringBoot ベースのプロジェクトを作成し、TestEntityManager の依存関係を追加する必要があります。次に、テストクラスにテストケースを記述し、TestEntityManagerクラスを使用してメモリデータベースを操作します。最後に、Maven コマンドを使用してテストを実行し、テスト結果を表示できます。この記事の導入により、読者は JPA 統合テストに TestEntityManager を使用する基本的な方法を習得したと思います。