250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- 코드업
- 자바
- 리액트
- 개발자일기
- 백엔드
- 프로그래머스
- Codeup
- 자바의정석
- 스프링부트
- 자바스크립트
- db
- 자바개발자
- 국비지원
- 자바알고리즘
- React
- 데이터베이스
- 운영체제
- 백엔드개발자
- 개발자
- 혼공컴운
- SpringBoot
- 프로세스
- 프로그래머
- 코딩
- 알고리즘
- 미라클모닝
- 국비지원코딩
- Java
- 소셜로그인구현
- 프로그래밍
Archives
- Today
- Total
초코딩(chocoding)
[Spring Boot] 테스트 케이스 작성하기 / 테스트 코드란? / 테스트 코드 실패 원인 / 테스트 코드 순서 본문
SpringBoot
[Spring Boot] 테스트 케이스 작성하기 / 테스트 코드란? / 테스트 코드 실패 원인 / 테스트 코드 순서
sweetychocoding 2024. 4. 4. 16:26728x90
테스트 코드(Test Code)란?
=> 소프트웨어의 기능과 동작을 테스트 하는데 사용하는 코드로,
소프트웨어의 결함을 찾아내고 수정하는 과정에서 매우 중요한 작업이다.
=> 개발자가 작성한 코드를 실행하고 예상된 결과가 정상적으로 나오는지 확인하는데 사용된다.
=> 개발자는 테스트 코드를 작성함으로써, 개발 과정 중 예상치 못한 문제를 미리 발견할 수 있고,
코드 수정이 필요한 상황에서 유연하고 안정적인 대응을 할 수 있다. 이는 곧 서비스의 품질 및 안정성과 직결되어 있다.
.
.
.
package hello.hellospring.repository;
import hello.hellospring.domain.Member;
import org.junit.jupiter.api.Test;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
class MemoryMemberRepositoryTest {
MemoryMemberRepository repository = new MemoryMemberRepository();
@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);
}
@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);
}
}
테스트 코드 하나씩 돌릴 때는 문제 없었던 것이 전체 테스트 코드를 돌리니까 에러가 떴다.
그 이유는 ...
테스트 코드는 순서를 보장하지 않는다.
즉, 내가 작성한 순서대로 테스트 코드가 작동하지 않는다는 것이다.
따라서 모든 테스트는 순서와 상관없이 메서드 별로 따로 동작하게 설계해야 한다.
위에 에러를 해결하기 위해서 한 메서드가 동작이 끝나면 데이터를 클린해주는 코드를 추가로 작성하였다.
public void clearStore() {
store.clear();
}
@AfterEach
public void afterEach() {
repository.clearStore();
}
느낀점
=> 국비지원 수업을 들을 당시에 테스트 코드의 중요성을 강사님께 들었었다. 하지만 팀 프로젝트의 마감기한에 쫓겨 코드를 짜다보니 자연스럽게 테스트 코드를 작성하지 못하게 되었다.
이번 기회에 테스트 코드를 작성해볼 수 있어서 좋았고, 테스트 코드의 필요성, 작성법 등등 많은 정보들을 구글링하며 새로운 지식들을 많이 접했다.
728x90
'SpringBoot' 카테고리의 다른 글
[intellij / springboot] 인텔리제이 대소문자 구분 없이 자동 완성하기 (0) | 2024.04.18 |
---|---|
[springboot/인프런] 코드로 배우는 스프링 부트 - 회원 서비스 테스트 (0) | 2024.04.17 |
ERD(Entity Relationship Diagram) 자동 생성 tool 추천 (0) | 2024.04.01 |
[Springboot] @ResponseBody의 사용 방식 / json에 대하여 / viewResolver (1) | 2024.03.27 |
[IntelliJ IDEA Community Edition] 인텔리제이 무료 버전 설치 방법 (0) | 2024.03.26 |