Spring Boot JPAの単体テストを書くときのメモ
概要
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());
}
}