SpringBoot_웹 MVC, DB 접근 기술 2

5w31892p·2023년 1월 13일
0

Spring

목록 보기
26/30

Test 만드는 단축키

  • 테스트 만들 클래스 켜두고 Alt + Insert -> 테스트 or Shift + Ctrl + T

:: Repository Test

Repository Test Code

:: Junit Test

  1. Assertions.assertEquals(member, result);
    Junit 테스트 프레임워크
  1. Assertions.assertThat(result).isEqualTo(member);
    AssertJ 테스트 프레임워크
    Alt + Enter를 눌러 static으로 만들어 Assrtions를 쓰지 않고 사용할 수 있다.

:: @AfterEach

  • 각 테스트가 종료될 때 마다 실행하여 메모리 DB에 저장된 데이터를 삭제
@AfterEach
  public void afterEach() {
  repository.clearStore();
}

:: Service

Service Code

  • Service는 비즈니스 로직을 구현하는 것
  • 중복 회원 관련 코드에 findByName 같은 로직이 있으면 메서드로 빼는 것이 좋다
  • 리팩토링 중 특정 로직 메서드로 분리할때 사용
    • 메서드 만들 부분 드래그 후 Shift+Ctrl+Alt+T -> 메서드 추출

:: Service Test

ServiceTest Code

  • 테스트는 메서드명을 한글로 적어도 무방하다.
  • 내용을 먼저 적고 그것을 변수로 만들려면 윈도우 기준 Ctrl + Alt + v

:: give / when / then 기법

  • give : 무언가가 주어졌는데
  • when : 이걸로 실행했을 때
  • then : 결과가 이걸로 나와야 한다.

:: @BeforeEach

  • 각 테스트 실행 전에 호출
  • 테스트가 서로 영향이 없도록 항상 새로운 객체를 생성하고, 의존관계도 새로 맺어준다.

:: 의존성 주입 (DI)

  • @AfterEach을 사용하려면 repository 객체 생성하는데 여러 테스트에서 필요할 때 다 new 해주면 각각은 다른 객체가 됨
  • 같은 리포지토리로 해야 한다.
1. Service 파일 변경

// private final MemberReository memberReository = new MemoryMemberRepository();
// 같은 리포지토리로 테스트 해야하기 때문에 아래와 같이 변경
// 외부에서 넣어주도록 생성자 생성

private final MemberReository memberReository;
public MemberService(MemberReository memberReository) {
	this.memberReository = memberReository;
}


2. serviceTest 파일 변경

// MemoryMemberRepository memberRepository = new MemoryMemberRepository();

MemberService memberService;
MemoryMemberRepository memberRepository;

@BeforeEach
public void beforEach() {
	memberRepository = new MemoryMemberRepository();
	memberService = new MemberService(memberRepository);
}

0개의 댓글