일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- php 프로그래밍 입문 연습문제
- php 프로그래밍 입문 3판
- php 프로그래밍 입문 예제
- php 프로그래밍 입문 문제풀이
- 최단 경로
- 자바 스프링
- spring
- 한정 분기
- 스프링
- programmers
- Flutter
- 파이썬
- JAVA SPRING
- Java
- 플러터
- C
- C언어
- 자바
- 플러터 개발환경 설정
- php 프로그래밍
- 배열
- 페이코 추천인코드
- php 프로그래밍 입문 솔루션
- 백준
- 페이코 초대코드
- php
- 페이코 친구코드
- php 프로그래밍 입문
- SWEA
- 페이코 추천인
Archives
- Today
- Total
02-02 06:48
ImJay
[Java Spring] 1-20. 스프링 통합 테스트 본문
반응형
[Java Spring] 1-20. 스프링 통합 테스트
1. src > test > java > hello.spring > service > MemberServiceTest 복사 + 붙여넣기 > MemberServiceIntegrationTest 클래스 생성
2. 코드 작성
package hello.hellospring.service;
import hello.hellospring.domain.Member;
import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.transaction.annotation.Transactional;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
@SpringBootTest
class MemberServiceIntegrationTest {
@Autowired
MemberService memberService;
@Autowired
MemberRepository memberRepository;
@Test
void 회원가입() {
//given
Member member = new Member();
member.setName("spring");
//when
Long saveId = memberService.join(member);
//then
Member findMember = memberService.findOne(saveId).get();
assertThat(member.getName()).isEqualTo(findMember.getName());
}
@Test
public void 중복_회원_예외() {
//given
Member member1 = new Member();
member1.setName("spring");
Member member2 = new Member();
member2.setName("spring");
//when
memberService.join(member1);
IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));
assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");
// try {
// memberService.join(member2);
// fail();
// } catch (IllegalStateException e) {
// assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");
// }
//then
}
}
- @SpringBootTest : 스프링 컨테이너와 테스트를 함께 실행한다.
3. 빌드
- 이미 데이터베이스에 같은 이름을 생성했으므로, 오류가 발생하는게 정상!
4. H2 콘솔에서 다음 명령어를 통해 스키마 삭제 후 다시 테스트
5. 테스트 통과됐음을 확인할 수 있다!
6. H2 콘솔을 통해 멤버가 값이 정상적으로 추가되었음을 확인할 수 있다.
7. 여기서 다시 한 번 테스트를 빌드하면 오류가 난다.
- 왜? : 같은 값이 이미 존재하니까.
- 그렇다면 예전처럼 또 afterEach로 delete 를 만들어주어야할까? : 훨씬 간단한 방법이 있다.
9. H2 콘솔에서 다음 명령어를 통해 스키마 삭제
10. @Transactional 어노테이션 추가
11. 테스트 케이스 빌드
12. DB 확인
- 비어 있는 것을 확인할 수 있다.
- @Transactional : 테스트 케이스에 이 애노테이션이 있으면, 테스트 시작 전에 트랜잭션을 시작하고, 테스트 완료 후에 항상 롤백한다. 이렇게 하면 DB에 데이터가 남지 않으므로 다음 테스트에 영향을 주지 않는다 즉, 다른 처리(aftereach)를 해줄 부담 없이 여러 테스트 케이스를 돌려볼 수 있다.
반응형
'Java Spring > 스프링 입문' 카테고리의 다른 글
[Java Spring] 1-22. JPA (1) | 2023.01.30 |
---|---|
[Java Spring] 1-21. JDBC Template (0) | 2023.01.30 |
[Java Spring] 1-19. 순수 JDBC (0) | 2023.01.30 |
[Java Spring] 1-18. H2 데이터베이스 설치 (0) | 2023.01.30 |
[Java Spring] 1-17. 회원 웹 기능 - 조회 (0) | 2023.01.30 |
Comments