Hướng dẫn viết test Repository trong Spring Boot
Bài viết này mình sẽ hướng dẫn mọi người cách test Repository trong Spring Boot với @DataJpaTest
- Để tiến hành test Repository trong SpringBoot trước hết ta phải thêm thư viện spring-boot-starter-test và com.h2database
testCompile group: ‘org.springframework.boot’, name: ‘spring-boot-starter-test’, version: ‘2.2.0.RELEASE’
testCompile group: ‘com.h2database’, name: ‘h2’, version: ‘1.4.200’
Code language: CSS (css)
- Ta sẽ làm việc với entity là Category:
@Id
@GeneratedValue(strategy =GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String name;
Code language: CSS (css)
- Sau đó tạo một repository như sau:
@Repository
public interface CategoryRepository extends JpaRepository<Category, Long> {
Category findByName(String categoryName);
}
Code language: PHP (php)
- Đầu tiên ta tạo một class có tên là CategoryRepositoryTest trong src/test/java như sau:
@DataJpaTest
public class CategoryRepositoryTest {
@Autowired
private TestEntityManager entityManager;
@Autowired
private CategoryRepository categoryRepository;
@BeforeEach
void init() {
Category category = new Category();
category.setName(“Java”);
entityManager.persist(category);
entityManager.flush();
}
Code language: PHP (php)
- Annoutation @DataJpaTest sẽ cung cấp cho ta một số cài đặt cần thiết cho việc test như là cấu hình in memory-database h2, cài đặt Hibernate, Spring Data, DataSource, …
- Và để thực hiện được việc test thì chúng ta cần phải có sẵn một số bản ghi, vì vậy chúng ta sử dụng đến TestEntityManager.
- Bây giờ chúng ta sẽ viết test case đầu tiên:
@DisplayName(“findByName can return a category has name Java”)
@Test
public void whenFindByName_thenReturnCategory () {
assertThat(categoryRepository.findByName(“Java”).getName()).isEqualTo(“Java”);
}
Code language: CSS (css)
- Trong đoạn code trên assertThat() là một phương thức có sẵn trong thư viện AssertJ được đi kèm với dự án Spring Boot
Author: Nguyễn Minh Quân
Tham khảo: CI/CD
Đăng ký nhận bộ tài liệu kỹ năng dành cho lập trình viên (video hướng dẫn + slide) tại đây
Bài viết chưa chỉ ra nơi cấu hình các thông số username, password của db để test