Back-end/Spring

[Spring] 스프링부트 테스트 케이스 실행하는 법(IntelliJ)

shoney9254 2021. 10. 27. 21:57
반응형

Member Repository 클래스를 만들고, 변수와 메서드를 구현했다. 

 

해당 클래스가 잘 만들었는지 테스트를 해보기 위해서, 테스트 케이스를 만들어 실행해보자.

 

1. MemoryMemberRepository 클래스 구현

먼저, 클래스를 구현해야한다. Member에 관한 정보들을 담아 두는 클래스를 만들어 보자. 

 

MemoryMemberRepository 

public class MemoryMemberRepository implements MemberRepository{

private static Map<Long, Member> store = new HashMap<>();
private static long sequence = 0L;

@Override
public Member save(Member member) {
member.setId(++sequence);
store.put(member.getId(), member);
return member;
}

@Override
public Optional<Member> findById(Long id) {
return Optional.ofNullable(store.get(id));
}

@Override
public Optional<Member> findByName(String name) {
return store.values().stream().filter(member -> member.getName().equals(name)).findAny();
}

@Override
public List<Member> findAll() {
return new ArrayList<>(store.values());
}

public void clearStore() {
store.clear();
}
}

 

 

 

2. 테스트 케이스 작성

1) test에다가 repository를 추가해서 MemoryMemberRepositoryTest 클래스를 추가

 

2) 테스트 케이스를 작성해본다. (임포트는 생락했습니다.)

테스트가 필요한 메서드는 @Test 어노테이션을 붙어서 작성하도록 합니다. 다양한 테스트 케이스들을 main함수가 아닌 곳에서 쉽게 테스트할 수 있는게 큰 장점이다.

MemoryMemberRepositoryTest 

public class MemoryMemberRepositoryTest {

MemoryMemberRepository repository = new MemoryMemberRepository();

@AfterEach
public void afterEach() {
repository.clearStore();
}

@Test
public void save() {
Member member = new Member();
member.setName("spring");

repository.save(member);

Member result = repository.findById(member.getId()).get();

// System.out.println("result = " + (result == member));
// Assertions.assertEquals(member, result);

assertThat(member).isEqualTo(result);
}

@Test
public void findByName() {
Member member1 = new Member();
member1.setName("spring1");
repository.save(member1);

Member member2 = new Member();
member2.setName("spring2");
repository.save(member2);

Member result = repository.findByName("spring1").get();

assertThat(result).isEqualTo(member1);
}

@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();

assertThat(result.size()).isEqualTo(2);
}

}

assertThat으로 해당 메서드가 잘 돌아가는지 확인할 수 있다. 물론, assertThat을 사용하기 위해서 Assertions 을 임포트했다. 

@AfterEach 는 모든 테스트가 끝나고 실행되는 콜백함수라고 보면된다. 테스트 케이스는 순서대로 작동되지 않기 때문에, 다른 테스트 케이스에 영향을 줄수 있다. 그래서 @AfterEach 를 사용해서 store에 있는 것들을 Clear 하도록 구현했다. 

 

 

3) 정상적으로 돌아가면 초록색 체크 표시 (비정상 케이스를 돌리면 엑스 표시)

3-1) 정상 

3-2) 실패

 

반응형