728x90
먼저 UserEntity를 정의 합니다.
package com.hiio.adminserver.entity.user;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.*;
@Entity
@Table(name = "T_USER")
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserEntity {
@Id
@Column(name = "USER_EMAIL", length = 512)
private String email;
@Column(name = "USER_PASSWORD", length = 64, nullable = true)
private String password;
@Column(name = "USER_NAME", length = 64, nullable = true)
private String name;
}
Email 을 id로 하고 512의 길이를 가집니다.
password는 null이 들어 올 수 있고 길이는 64입니다.
name 은 비밀번호와 마찬가지로 null을 허용하고 길이는 64입니다.
추후에 속성들이 추가 되거나 수정할 예정입니다.
그럼 이제 Repository를 하나 만들어 줍니다.
package com.hiio.adminserver.repository.user;
import com.hiio.adminserver.entity.user.UserEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<UserEntity, String> {
}
그리고 총 3개의 insert 테스트 코드를 작성해 줬습니다.
- 아무런 속성값을 입력하지 않으면 JpaSystemException이 발생하는 것이 예상값 테스트
- 이메일 속성값에 빈문자열을 입력했을 경우 TransactionSystemException이 발생하는 것이 예상값인 테스트
- 이메일 속성값만을 넣은 테스트 코드
package com.hiio.adminserver.User;
import com.hiio.adminserver.entity.user.UserEntity;
import com.hiio.adminserver.repository.user.UserRepository;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.orm.jpa.JpaSystemException;
import org.springframework.transaction.TransactionSystemException;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsString;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
@SpringBootTest
class UserRepositoryTest {
private final Logger log = LoggerFactory.getLogger(getClass());
@Autowired
private UserRepository userRepo;
@Test
@DisplayName("Insert User Exception JpaSystemException")
void insertUserJpaSystemException(){
Exception exception = assertThrows(JpaSystemException.class,()->{
UserEntity user = UserEntity.builder().build();
userRepo.save(user);
userRepo.flush();
});
log.error(exception.getClass().getName());
exception.printStackTrace();
assertThat(exception.getMessage(), containsString("must be manually assigned before calling 'persist()'"));
}
@Test
@DisplayName("Insert User Exception TransactionSystemException")
void insertUserTransactionSystemException(){
Exception exception = assertThrows(TransactionSystemException.class,()->{
UserEntity user = UserEntity.builder().email("").build();
userRepo.save(user);
userRepo.flush();
});
log.error(exception.getClass().getName());
exception.printStackTrace();
assertThat(exception.getMessage(), containsString("Could not commit JPA transaction"));
}
@Test
@DisplayName("Insert User Fill Email")
@Transactional
void insertUser(){
UserEntity user = UserEntity.builder().email("asd@asd.com").build();
userRepo.save(user);
}
}
728x90
'project > 관리자 페이지' 카테고리의 다른 글
[관리자 페이지] 암호화 유틸리티 만들기 (0) | 2024.05.20 |
---|---|
[관리자 페이지] DTO를 만들어 보자 . (0) | 2024.05.17 |
[관리자 페이지] Jira BackLog (0) | 2024.05.10 |
[관리자 페이지] 요구사항? 요청사항? 글로 우선 써보고 다이어그램을 그려보자- 로그인 / 회원가입만 #1 (0) | 2024.05.10 |
[관리자 페이지] DFD 그리기 연습 맞든 틀리든 우선 해보자! (0) | 2024.05.09 |