Spring Boot JPAの単体テストを書くときのメモ

Dev/Java/JUnit
Spring Boot
JPA
OR Mapper
JUnit5

更新日時 : 2021/02/21 14:21
投稿日時 : 2021/02/21 14:21

概要

Spring Boot + JUnit5でJPAのRepositoryのテストコード書いたことそういえばなかったので簡単な動作検証をした

メモ

  • @ExtendWith(SpringExtension.class)@DataJpaTestを使う
  • EntityManager.persistでテストデータ登録する
    • 外部SQLでも可能だと思うが、動作検証のためコードに入れた

サンプル

@ExtendWith(SpringExtension.class)
@DataJpaTest
@Transactional
@Sql("classpath:/test-data.sql")
public class UserJpaRepositoryTest {
    @Autowired
    EntityManager entityManager;
    @Autowired
    UserJpaRepository userJpaRepository;

    @Test
    public void findAll_success() {
        User user = new User();
        user.setCreatedBy("tester");
        user.setName("Test Taro");
        entityManager.persist(user);
        Iterable<User> users = userJpaRepository.findAll();
        users.forEach(user1 -> {
            assertAll(
                    () -> assertTrue(user1.getId() > 0),
                    () -> assertEquals("tester", user1.getCreatedBy()),
                    () -> assertEquals("Test Taro", user1.getName())
            );
        });
        assertEquals(1, ((Collection<?>) users).size());
    }
}