소개
게시글
질문&답변
2023.06.16
테스트 코드 작성에 대한 질문
#레파지토리 package groupware.board.repository; import groupware.board.domain.Category; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import javax.annotation.PostConstruct; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Repository public class CategoryRepository { private static final Map store = new HashMap(); private static Long sequence = 0L; public Map getStore() { return store; } public Long getSequence() { return ++sequence; } public void save(Category category) { store.put(category.getId(), category); } /** * sample data */ @PostConstruct public void init() { save(new Category(++sequence, "SampleCategory1")); save(new Category(++sequence, "SampleCategory2")); } /** * for test */ public void clear() { store.clear(); } }#서비스 package groupware.board.service; import groupware.board.domain.Category; import groupware.board.repository.CategoryRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service @RequiredArgsConstructor public class CategoryServiceImpl implements CategoryService { private final CategoryRepository categoryRepository; public Category save(Category category) { category.setId(categoryRepository.getSequence()); categoryRepository.save(category); return category; } public List findAll() { return new ArrayList(categoryRepository.getStore().values()); } public Category findById(Long id) { List categories = findAll(); for (Category category : categories) { if (category.getId().equals(id)) { return category; } } return null; } /** * for test */ public void clearStore() { categoryRepository.clear(); } }#테스트 package groupware.board.service; import groupware.board.domain.Category; import org.junit.jupiter.api.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.List; import static org.assertj.core.api.Assertions.*; @SpringBootTest class CategoryServiceImplTest { @Autowired CategoryService categoryService; @Test void init() { //given //when List categories = categoryService.findAll(); //then assertThat(categories.size()).isEqualTo(2); assertThat(categories.get(0).getCategoryName()).isEqualTo("SampleCategory1"); assertThat(categories.get(1).getCategoryName()).isEqualTo("SampleCategory2"); } @Test void findById() { //given //when Category findCategory1 = categoryService.findById(1L); Category findCategory2 = categoryService.findById(2L); //then assertThat(findCategory1.getCategoryName()).isEqualTo("SampleCategory1"); assertThat(findCategory2.getCategoryName()).isEqualTo("SampleCategory2"); } @Test void save() { //given Category newCategory = categoryService.save(new Category("newCategory")); //when Category savedCategory = categoryService.findById(newCategory.getId()); //then assertThat(savedCategory).isEqualTo(newCategory); } }강의를 듣고 복습하는 겸 DB 연결 하기 전에 강사님이 하신 것처럼 map으로 저장소를 만들고, 대신 저는 서비스까지 추가해서 해봤는데..레파지토리에 있던 메서드들을 서비스로 옮기려니 중복이 생기고 좀 애매해진 것 같아서 코드에 대한 피드백도 해주시면 감사하겠습니다..테스트는 전체, 각각 돌려도 모두 성공이긴 한데..스스로 제대로 작성한 것인지 확신이 안듭니다 ㅠ질문을 명확하게 드리자면,init() 메서드를 테스트 할 필요성이 있는지findById() 메서드를 테스트할 때, 저는 초기 데이터를 기준으로 테스트하였는데 새로운 카테고리를 추가한 다음 테스트해야하는지2번의 대답이 yes 라면 findById() 테스트는 save()가 정상 동작한다는 가정 하에 이루어지는 건지궁금합니다..테스트 코드는 독립적으로 작성해야 한다고 배웠는데 제가 이해가 부족한지 강사님이 하실 땐 이해가 잘 되는 것 같았는데 갑자기 너무 헷갈립니다
- 0
- 2
- 255
질문&답변
2023.06.01
Connection is closed 에러발생(해결)
감사합니다! 덕분에 해결햇어요
- 2
- 4
- 5.6K