@SpringBootTest
- 테스트 할 때도 (실제 db와 연결하는) 스프링과 같이 동작하도록 연결하는 방법
- 보통 사용자 db 데이터가 아닌 테스트 전용 db를 따로 구축하여 테스트를 한다
@Transactional
- 테스트 케이스에 해당 애너테이션을 붙이면 테스트를 실행할 때 sql 문이 db에 반영되지 않도록 하는 방법
- 테스트가 끝나면 롤백을 한다 (= 커밋을 안 한다)
- 클래스 레벨에 선언하면 선언한 클래스 내부의 모든 메서드나 서브 클래스에 적용된다
- 예를 들어 트랜잭션 시작하고 테스트 하나 실행하고 끝나면 롤백하고 ...
- If your test is @Transactional, it rolls back the transaction at the end of each test method by default.
* Test 예시
@SpringBootTest // 스프링 컨테이너와 테스트를 함께 실행
@Transactional // 테스트 완료 후 항상 롤백 실행 (데이터베이스 반영 X)
class MemberServiceIntegrationTest {
@Autowired MemberService memberService;
@Autowired MemberRepository memberRepository;
@Test
void 회원가입() throws Exception {
// given
Member member = new Member();
member.setName("spring");
// when
Long savedId = memberService.join(member);
// then
Member findMember = memberService.findOne(savedId).get();
assertThat(member.getName()).isEqualTo(findMember.getName());
}
}
'inflearn' 카테고리의 다른 글
[인프런] 김영한의 스프링 입문 - 순수 Jdbc, JdbcTemplate, MyBatis, JPA, Spring Data JPA (0) | 2024.07.03 |
---|---|
[인프런] 김영한의 스프링 입문 - MVC와 템플릿 엔진 (1) | 2024.06.25 |
[인프런] 김영한의 자바 기본 강의 섹션13. 다음으로 (240117) (0) | 2024.01.17 |
[인프런] 김영한의 자바 기본 강의 섹션12. 다형성과 설계 (240117) (0) | 2024.01.17 |
[인프런] 김영한의 자바 기본 강의 섹션11. 다형성2 (240115) (0) | 2024.01.15 |