memostack
article thumbnail
블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.tistory.com/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
반응형

사전 준비

테스트를 위해, Entitiy와 Repository를 생성한다.

 

Entity 생성

Role.java

@Entity
@Table(name = "role")
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@ToString
public class Role {

  // PK
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private long id;

  // 권한 이름
  @Column(nullable = false, length = 50)
  private String roleName;
}

 

Repository 생성

RoleRepository.java

@Repository
public interface RoleRepository extends JpaRepository<Role, Long> {}

 

테스트 코드 작성

  • junit5에서는 @RunWith 대신에 @ExtendWith(SpringExtend.class)을 사용한다.
  • @DataJpaTest 어노이테이션을 사용하면, JPA 관련된 Component만 로드 된다.
    • 덤으로, 테스트 종료 후 롤백도 같이 수행하여, 테스트할때 들어간 값에 대해 걱정할 필요없다.
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
// ... 중략 ...

@ExtendWith(SpringExtension.class)
@DataJpaTest
class RoleRepositoryTest {

  @Autowired private RoleRepository roleRepository;

  @Test
  void save() {
    // given
    String roleName = "ADMIN";
    final Role role = Role.builder().roleName(roleName).build();

    // when
    final Role savedRole = roleRepository.save(role);

    // then
    assertEquals(roleName, savedRole.getRoleName());
  }
}

 

테스트 성공

 


 

관련 글

2021/01/13 - [Spring/Spring Boot] - SpringBoot, Junit5에서 Service 테스트

 

SpringBoot, Junit5에서 JPA Service 테스트

서비스 작성 MemberService.java 생성자 주입을 통해, MemberRepository 와 BCryptPasswordEncoder 를 주입한다. BCryptPasswordEncoder 는 시큐리티에 Bean 을 생성했다. (아래 펼쳐서 확인) 더보기 @Configurati..

memostack.tistory.com

 

반응형
블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.tistory.com/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
profile

memostack

@bluemiv_mm

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!