ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring boot Entity test code
    Computer Science/Spring boot 2022. 10. 7. 01:19
    @NoArgsConstructor
    @Entity
    @Getter
    @Table(name = "lof_user")
    @TypeDef(name = "json", typeClass = JsonStringType.class)
    public class UserEntity {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "id")
        private Long userId;
        @NotNull
        @Column(name = "token")
        private String fcmToken;
        @NotNull
        @Column(name = "email")
        private String email;
        @NotNull
        @Column(name = "nickname")
        private String nickname;
        @NotNull
        @Column(name = "profile_img")
        private String profileImg;
    
        @Type(type = "json")
        @Column(name = "team_list" ,columnDefinition = "json")
        private List<Long> teamList = new ArrayList<>();
    
        @Type(type = "json")
        @Column(name = "league_list" ,columnDefinition = "json")
        private List<Long> leagueList = new ArrayList<>();
    
        @Type(type = "json")
        @Column(name = "selected", columnDefinition = "json")
        private Map<Long, Boolean> userSelected = new HashMap<>();
    
        public void setFcmToken(String fcmToken) {
            this.fcmToken = fcmToken;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public void setNickname(String nickname) {
            this.nickname = nickname;
        }
    
        public void setProfileImg(String profileImg) {
            this.profileImg = profileImg;
        }
    
        public void setTeamList(List<Long> teamList) {
            this.teamList = teamList;
        }
    
        public void setLeagueList(List<Long> leagueList) {
            this.leagueList = leagueList;
        }
    
        public void setUserSelected(Map<Long, Boolean> userSelected) {
            this.userSelected = userSelected;
        }
    
        @Builder
        public UserEntity(String fcmToken, String email, String nickname, String profileImg, List<Long> leagueList) {
            this.fcmToken = fcmToken;
            this.email = email;
            this.nickname = nickname;
            this.profileImg = profileImg;
            this.leagueList = leagueList;
        }
    }

    실험할 userEntity 이다.

    위에서 언급 하고 싶은 건 @NotNull 어노테이션 정도이다.

    @Column(name = "token" , nullable = false)

    nullable 을 사용하지 않고

    implementation 'org.springframework.boot:spring-boot-starter-validation'

    validation 까지 추가해주면서 NotNull 어노테이션을 붙이는 것은 더욱 안정성이 좋기 때문이다.

    nullable은 db column을 null값이 불가능하게  설정을 하여서 만약 null값이 entity에 들어갔다면 db 차원에서 쿼리가 들어왔을 때 오류를 던져준다.

    하지만 @NotNull 어노테이션은 쿼리가 던져지기 전 단계에서 null값을 판단을 하여서 더욱 빠른 단계에서 예외처리가 가능하다.

    더욱이 @NotNull 어노테이션은 nullable = false 기능까지 기본으로 들어가있으니 상위 호환이라고 할 수 있다.

     

    본문으로 돌아와서 

     

    @Test
    @DisplayName("userEntity 생성 테스트")
    void createUserEntity() {
        //given
        String fcmToken = "token";
        String email = "email";
        String nickname = "nickname";
        String profileImage = "profileImage";
        List<Long> leagueIdList = List.of(1L, 2L, 3L);
    
        //when
        UserEntity userEntity = UserEntity.builder()
                .fcmToken(fcmToken)
                .email(email)
                .nickname(nickname)
                .profileImg(profileImage)
                .leagueList(leagueIdList)
                .build();
    
        //then
        assertThat(userEntity.getFcmToken()).isEqualTo(fcmToken);
        assertThat(userEntity.getEmail()).isEqualTo(email);
        assertThat(userEntity.getNickname()).isEqualTo(nickname);
        assertThat(userEntity.getProfileImg()).isEqualTo(profileImage);
        assertThat(userEntity.getLeagueList()).isEqualTo(leagueIdList);
    }

    userEntity 가 잘 생성이 되었는지 test와 함께 setter 함수 작동 여부까지 test 코드를 만들어 주었다.

    @Test
    @DisplayName("userEntity setter 테스트")
    void setUserEntity() {
        //given
        String fcmToken = "token";
        String email = "email";
        String nickname = "nickname";
        String profileImage = "profileImage";
        List<Long> leagueIdList = List.of(1L, 2L, 3L);
    
        UserEntity userEntity = UserEntity.builder()
                .fcmToken(fcmToken)
                .email(email)
                .nickname(nickname)
                .profileImg(profileImage)
                .leagueList(leagueIdList)
                .build();
    
        //when
        String newFcmToken = "newToken";
        String newEmail = "newEmail";
        String newNickname = "newNickname";
        String newProfileImage = "newProfileImage";
        List<Long> newLeagueIdList = List.of(4L, 5L, 6L);
    
        userEntity.setFcmToken(newFcmToken);
        userEntity.setEmail(newEmail);
        userEntity.setNickname(newNickname);
        userEntity.setProfileImg(newProfileImage);
        userEntity.setLeagueList(newLeagueIdList);
    
        //then
        assertThat(userEntity.getFcmToken()).isEqualTo(newFcmToken);
        assertThat(userEntity.getEmail()).isEqualTo(newEmail);
        assertThat(userEntity.getNickname()).isEqualTo(newNickname);
        assertThat(userEntity.getProfileImg()).isEqualTo(newProfileImage);
        assertThat(userEntity.getLeagueList()).isEqualTo(newLeagueIdList);
    }
Designed by Tistory.