2022. 3. 5. 17:17ㆍ[SpringBoot]_/[Spring-boot]_인프런 강의
우선 DB를 연동하지 않고 메모리에 저장해서 사용하는 방법을 정리해보았습니다.
1] 사용할 domain, 저장소 개념인 repository 를 만듭니다.
2-1] Member.java
안에 id와 name 이라는 2가지의 데이터필드를 설정하고 이를 참조할 함수인
getter 와 setter를 설정합니다. [ 단축키 ALT + insert ]
2-2] repository 안의 MemberRepository.java [ Interface ]
도메인인 Member 클래스를 받아서 인터페이스 함수를 설정합니다. 그에 맞는 기능은 MemoryMemberRepository.java 에 구현합니다
2-3] MemoryMemberRepository.java
인터페이스인 MemoryRepository를 참조하여 각각의 함수를 오버라이드 하여 기능을 구현하였습니다.
3] TEST 코드 작성.
spring 에서 제공하는 test 부분에 테스트 코드를 작성합니다.
MemoryMemberRepositoryTest.java
ackage hello.hellospring.repository;
import hello.hellospring.domain.Member;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import java.util.List;
import java.util.Optional;
import static org.junit.jupiter.api.Assertions.*;
class MemoryMemberRepositoryTest {
MemoryMemberRepository repository = new MemoryMemberRepository();
//테스트가 끝날 떄마다 리포시토리를 지워주는 코드를 작성해야한다.
@AfterEach
public void afterEach(){
repository.clearStore();
}
@Test
public void save(){
Member member = new Member();
member.setName("Spring");
//ctrl + shift + enter 시 바로 내려옴
repository.save(member);
Member result = repository.findById(member.getId()).get();
//soutv
//System.out.println("result = " + (result == member));
//assert
//Assertions.assertEquals(member,result);
//assertThat(member).isEqualTo(result);
}
@Test
public void findByName(){
Member member1 = new Member();
member1.setName("spring1");
repository.save(member1);
//복사한것 동시에 바꾸기 -> shift +f6
Member member2 = new Member();
member2.setName("spring2");
repository.save(member2);
Member result = repository.findByName("spring1").get();
Assertions.assertEquals(result,member2);
}
@Test
public void findAll(){
Member member1 = new Member();
member1.setName("spring1");
repository.save(member1);
Member member2 = new Member();
member2.setName("spring2");
repository.save(member2);
List<Member> result = repository.findAll();
Assertions.assertEquals(result.size() ,2);
//System.out.println("result = " + result);
}
//TTD 테스트 주도 개발.
}
코드설명을 하겠습니다.
@AfterEach annotation
해당 어노테이션을 달 경우에는 각각의 테스트가 끝날 때마다 해당 함수를 실행시키는 것이며,
MemorymemberRepository 생성자로 해당 클래스에 지정된 함수를 참조하여 사용합니다.
@Test annotation
해당 어노테이션을 달 경우에는 말 그대로 테스트 코드를 실행시 해당 함수의 이름별로 각각 동작하게 됩니다.
save() 함수 테스트 를 예시로 들어보겠습니다.
생성자로 Member 도메인을 참조하고, setName으로 저장을 합니다.
그리고나서 save 함수를 이용해서 해당 생성자로 생성된 member라는 변수에 지정된 값을 repository에 저장합니다.
getId를 이용해서 지금 member 에 저장된 값을 result로 받아오고, 이를
Assertions.assertEquals 함수를 이용해서 값이 같은지 비교하게 됩니다.
해당 test를 실행시키면 console에 다음과 같은 성공화면이 뜨게 됩니다.
'[SpringBoot]_ > [Spring-boot]_인프런 강의' 카테고리의 다른 글
[Spring-boot]_6차 MVC 구조 만들기(feat.thymeleaf) (0) | 2022.03.12 |
---|---|
[Spring-boot]_5차 Service(feat.메모리 저장) (0) | 2022.03.05 |
[Spring-boot]_3차 Spring boot (@Requestbody) (0) | 2022.02.20 |
[Spring-boot]_2차 Spring boot - view 환경설정 (0) | 2022.02.20 |
[Spring-boot]_1차 Spring boot - 환경설정 (0) | 2022.02.20 |