티스토리 뷰

728x90
반응형

1. 데이터 베이스 접근 로직2

(1) 테스트 (이어서)

  • Article과 유사하게 ArticleComment를 수정한다.
    • 어노테이션을 붙여준다.
    • 외래키에 대해서는 @ManyToOne(optional = false) 를 사용한다.
    • protected 로 생성을 하고 public으로 불러오는 것, equals() and hashCode() 도 구현한다.
  • Services 탭에서 잘 구동되는지 확인 가능하다.
    • + 버튼을 누르고 run configuration type 을 누른다.
    • Spring boot를 찾아 선택하여 FastCampusProjectBoardApplication을 통해 구동해볼 수 있다.
    • spring 로그가 run과 분리해서 볼 수 있다.
    • 여러개의 프로젝트를 관리할 때 좋다.
    • 정지하고 데이터 베이스 탭에 가서 refresh를 해주면 테이블이 생성된 것을 확인할 수 있다.
  • DB로부터 Entity를 생성할 수도 있다. 
  • JPA Structure > Article > DTOs > 우클릭 > New > dto
    • 필드를 전부 선택하고, ok ->  ArticleDto 생성해준다.
    • 이때 id는 잘 넣지 않는다.
  • Intentions > multiple lines 기능을 통해 줄바꿈을 쉽게 할 수 있다.
  • 양방향 바인딩
    • Article에 연동되어 있는 comments를 set을 통해 한 번에 볼 수 있다.
@OneToMany(mappedBy = "article", cascade = CascadeType.ALL) // article 테이블에서 온 것을 명시
private final Set<ArticleComment> articleComments = new LinkedHashSet<>();
  • 운영에 있어서는 게시글은 사라지더라도 댓글이 남았으면 좋겠기 때문에 cascade를 설정 안하기도 한다. 
  • @ToString 이 계속 중복 참조하는 경우를 방지하기 위해 Article 에서 comments를 확인하는 경우는 연결을 끊어준다.
    • @ToString.Exclude 사용
  • 테스트를 위해서
    • com.fastcampus.projectboard > 우클릭 > New > Spring Data > Repository 
      • Entity: Article
      • Package: com.fastcampus.projectboard.repository
    • 같은 방법으로 ArticleComment에 대해서 생성할 수 있다.
      • 생성된 Repository에서 우클릭 > New > Spring Data > Repository
    • 혹은 ArticleCommentRepositiry Interface를 생성하여 JpaRepository를 만들 수 있다.
  • ctrl + shift + t 를 통해 쉽게 Test를 생성할 수 있다.
  • 테스트를 하기 전, 관련 어노테이션을 추가한다.
    • @DataJpaTest : 슬라이스 테스트
    • @Import(JpaConfig.class) : 인식 못하는 클래스 추가
    • @DisplayName("JPA 연결 테스트")
  • 두 개의 Repository 를 테스트 할 것이다.
    • Live Templates를 사용하면 쉽게 템플릿을 만들어서 사용할 수 있다.
    • select test
      • findAll을 사용하여 저장소에 있는 모든 정보를 확인해본다.
      • assertThat(articles).isNotNull().hasSize(0);
    • insert test
      • 임의로 Article 정보를 주어주고, repository에 save(article)를 한다.
      • assertTaht(articleRepository.count()).isEqualTo(previousCount+1);
      • Article / ArticleComment Entity 위에 @EntityListeners(AuditingEntityListener.class)를 추가해야한다.
    • updating test
      • 수정이 있을 때 잘 통과되는지 체크한다.
      • article 중에서 id를 하나 가져와서 hashtag를 임의로 넣어준다.
      • assertThat(savedArticle).hasFieldOrPropertyWithValue("hashtag",updatedHashtag);
    • delete test
      • previousArticleCount, previousArticleCommentCount, deleteCommentCount 를 변수에 저장해놓고,
      • articleRepository.delete(article)을 했을때,  아티클 개수는 하나만 줄고, comments 개수는 글 안의 comment 수만큼 줄었는지 확인
      • assertThat(articleRepository.count()).isEqualTo(previousArticleCount -1);
      • assertThat(articleCommentRepository.count()).isEqualTo(previousArticleCommentCount -deleteCommentCount);
  • 테스트 데이터를 대량으로 생성해주는 사이트
    • mockaroo.com을 참고하면 테스트 하는데 도움이 된다.
    • 도메인을 그대로 넣고 타입 등을 설정하면 관련 데이터를 생성해준다.
  • 수정사항을 GitKraken을 통해 commit을 남기고 push한다.

 


 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://bit.ly/43z0P6S

 

 

#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완

728x90
반응형
댓글