Hướng dẫn viết test Repository trong Spring Boot

Testing

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.RELEASEtestCompile group: ‘com.h2database’, name: ‘h2’, version: ‘1.4.200Code 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
Nhấn vào đây để chạy test case vừa viết

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

COMMENTS:

  • Đặng Trương Sinh says:

    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

Leave a Reply

Your email address will not be published. Required fields are marked *