본문 바로가기

Spring/SpringBoot

SpringBoot- 테스트 케이스 작성 예시

Member.class

package jpabook.jpashop;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
@Getter @Setter
public class Member {

    @Id
    @GeneratedValue
    @Column(name = "MEMBER_ID")
    private Long id;
    private String name;
}

MemberRepository.class

package jpabook.jpashop;

import org.springframework.stereotype.Repository;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Repository //Member 엔티티를 관리하는 다양한 메서드 구현(저장, 조회 등등...)
public class MemberRepository {

    @PersistenceContext
    // EntityManger 생성 어노테이션!
    // EntityMangerFactory 만들고 주입하는 대신 @PersistenceContext 하나면 EntityManger를 만들어줌.
    // 단 사용하기 위해선 build.gradle에 dependencies로
    // "implementation 'org.springframework.boot:spring-boot-starter-data-jpa'" 입력 해줘야함
    private EntityManager em;

    // persist 함수 (id를 반환한다)
    public Long save(Member member) {
        em.persist(member);
        return member.getId();
    }

    // Member 엔티티 조회 후 반환 함수
    public Member find(Long id) {
        return em.find(Member.class, id);
    }
}

test/MemberRepositoryTest.class (테스트 케이스)

package jpabook.jpashop;

import org.assertj.core.api.Assertions;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;

import static org.junit.Assert.*;

@RunWith(SpringRunner.class)
@SpringBootTest
public class MemberRepositoryTest {

    @Autowired
    MemberRepository memberRepository;

    @Test
    @Transactional
    public void testMember() throws Exception{
        //given
        Member member = new Member();
        member.setName("memberA");

        //when
        Long savedId = memberRepository.save(member);
        Member findMember = memberRepository.find(savedId);

        //then
        Assertions.assertThat(findMember.getId()).isEqualTo(member.getId());
        Assertions.assertThat(findMember.getName()).isEqualTo(member.getName());
    }
}

 

 테스트 케이스 작성시 어노테이션으로 @Runwith(SpringRunner.class)@SpringBootTest를 꼭 붙여주자.

그래야지 SpringBoot실행 되면서 테스트가 가능함. 위의 테스트는 생성한 member 엔티티가 memberRepository를 통해서 잘 저장,

조회가 되는지를 테스트하는 테스트 코드이다

 

테스트 메서드 생성시에는 메서드 위에 @Test와 @Transactional 어노테이션을 붙여주자.

 

단축키

 특정 엔티티를 만들고 테스트 케이스를 생성하고 싶다면 ctrl + shift + t 혹은 command+shift+t를 통해서 바로 test 폴더에 test 케이스 생성이 가능하다.

'Spring > SpringBoot' 카테고리의 다른 글

SpringBoot- @GetMapping, @PostMapping  (0) 2023.06.28
SpringBoot- Controller  (0) 2023.06.25
SpringBoot- @Transactional  (0) 2023.06.22
SpringBoot- EntityManager 생성법  (0) 2023.06.20
SpringBoot- 기본 스프링 부트 설정  (0) 2023.06.20