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 |