약간의 사담을 먼저 하자면, 코드치는데는 진짜 10분도 안걸리는데
하나하나 이해하면서 포스팅을 작성하다보니... 포스팅 쓰는게 진짜 오래 걸린다!
코드만 봐도 아!? 이게 이거야? 라고 이해하는 날이 왔으면 좋겠다...😥
나의 마음가짐 짤 한번 보고 오늘도 화이팅해서 포스팅하자!
오늘은 이전 시간에 구현한 기능들이 제대로 박동하는지 확인하기로 했다.
테스트를 해볼 수 있는 방법을 생각해보면 2가지 방법이 떠오른다.
1. java의 main 메서드를 통해서 실행
2. 웹 어플리케이션의 컨트롤러를 통해서 해당 기능을 실행
하지만 이 방법들은 준비하고 실행하는데 오래 걸리고, 반복적으로 실행하기가 어렵다는 단점이 있다.
그래서 Java 에서 제공하는 JUnit이라는 프레임워크로 테스트 코드를 작성함으로 위 단점을 해결할 수 있다.
그렇다면 본격적으로 테스트하기 위해 세팅을 해보자
📚 MemoryMemberRepositoryTest 만들기
우리가 테스트 해볼 기능은 MemoryMemberRepository이다.
보통 테스트 코드를 작성할때 테스트 대상이 되는 class 이름에 Test를 붙여주는 것이 일반적이라고 한다.
그래서 test 폴더에 repository package를 생성하고, MemoryMemberRepositoryTest라는 이름의 클래스를 생성한다.
그리고 MemoryMemberRepository기능을 테스트할 예정임으로 MemoryMemberRepository 객체를 만들어준다.
public class MemoryMemberRepositoryTest {
MemoryMemberRepository repository = new MemoryMemberRepository();
}
본격적으로 하나하나 기능을 테스트해보자
- Save (저장)
우선 save() 함수를 선언하고, 위에 @Test를 적어준다.
JUnit는 테스트 패키지 하위의
@Test 어노테이션이 붙은 메소드를 단위 메소드로 인식하여 독립적으로 실행할 수 있도록 한다.
@Test
public void save(){
Member member = new Member();
member.setName("spring");
repository.save(member);
Member result = repository.findById(member.getId()).get();
assertThat(member).isEqualTo(result);
}
① member 객체를 생성하고 setName을 통해 이름을 spring이라고 지정한다.
② Member 객체를 저장하는 repository의 save 메서드를 호출합니다.
③ repository에서 이전에 저장한 멤버를 다시 찾아옵니다
④ 테스트에서 예상한 값과 실제 값이 같은지 확인하는데 사용
이거 말고도 총 2개로 테스트를 해봤는데 적어보자면
1) 콘솔에서 직접 확인( 테스트로 결과 출력)
// System.out.println("result = " + (result == null)); // 다른 경우
// System.out.println("result = " + (result == member)); // 같은 경우
2) org.junit.jupiter.api 의 Assertions 를 이용한 방법 ( 같으면 아무것도 안뜸 다르면 에러 )
// Assertions.assertEquals(result, null); // 다른 경우
// Assertions.assertEquals(result, member); // 같은 경우
🤔 Assertions ? assert은 뭐야?
Assertions 은 JUnit5에서 기본으로 제공하는 테스트 api이다
assertEqual(), assertNotNull(), assertTrue() 등 여러 메서드들을 제공하며 테스트 시 비교하거나 제한을 둔다.
assertEquals() 은
'ON > 실습' 카테고리의 다른 글
[Spring Boot] 회원관리 예제 - 회원 서비스 테스트 ⑤ (0) | 2023.11.17 |
---|---|
[Spring Boot] 회원관리 예제 - 회원 서비스 개발 ④ (0) | 2023.11.13 |
[Spring Boot] 회원관리 예제 - 회원 도메인과 리포지토리 만들기 ② (2) | 2023.11.08 |
[Spring Boot] 회원관리 예제 - 비즈니스 요구 사항 정리 ① (0) | 2023.11.07 |
[Spring Boot] 스프링 웹 개발 기초 ③ - API (2) | 2023.11.06 |