게시글
질문&답변
2022.03.23
회원 리포지토리 테스트케이스 작성 편에서 clearStore() 시 질문
이것은 MemoryMemberRepository class 입니다. clearStore() 메서드에서 sequence 초기화 하지 않았을 때 테스트가 깨졌습니다. 따져보면 검증코드 실행 전에 깨진다고 볼 수 있겠네요. 아이디가 초기화 되지 않아서 Member.id == 1L 인 학생이 없으니까요. (사진) package hello.hellospring.repository; import hello.hellospring.domain.Member; import java.util.*; public class MemoryMemberRepository implements MemberRepository { private static Map 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 findById(Long id) { return Optional.ofNullable(store.get(id)); } @Override public Optional findByName(String name) { return store.values().stream() .filter(member -> member.getName().equals(name)) .findAny(); } @Override public List findAll() { return new ArrayList(store.values()); } public void clearStore() { // sequence = 0L; store.clear(); } }
- 0
- 3
- 548
질문&답변
2022.03.23
회원 리포지토리 테스트케이스 작성 편에서 clearStore() 시 질문
테스트 코드입니다. package hello.hellospring.repository; import hello.hellospring.domain.Member; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; class MemoryMemberRepositoryTest { MemoryMemberRepository repository = new MemoryMemberRepository(); @AfterEach public void afterEach() { repository.clearStore(); } @Test void save() { Member member = new Member(); member.setName("mike"); repository.save(member); Member saved_member = repository.findById(1L).get(); assertThat(saved_member).isSameAs(member); } @Test void findByName() { Member member1 = new Member(); member1.setName("dave"); repository.save(member1); Member member2 = new Member(); member2.setName("camel"); repository.save(member2); Member saved_member = repository.findByName("dave").get(); assertThat(saved_member).isSameAs(member1); } @Test void findAll() { Member member1 = new Member(); member1.setName("dave"); repository.save(member1); Member member2 = new Member(); member2.setName("camel"); repository.save(member2); List memberList = repository.findAll(); Assertions.assertThat(memberList.size()).isEqualTo(2); } }
- 0
- 3
- 548
질문&답변
2020.06.10
profile 적용 관련 질문입니다.
하아, 문제를 확인했습니다. SpringApplication.run() method 실행할 때 argument를 받아올 수 있도록 main method에서 받아온 args 변수를 전달했어야 하는데 빼먹었군요. 정말 저걸 빼먹었을 거라고는 상상도 못했습니다. ^^; 바로 알려주시지 않고 찾아보도록 배려해주셔서 감사합니다.
- 0
- 6
- 237
질문&답변
2020.06.06
profile 적용 관련 질문입니다.
문제가 있었던 프로젝트를 공유해 드립니다. https://github.com/camel-master/SpringBootExample.git
- 0
- 6
- 237
질문&답변
2020.05.08
본 강의 완강 후 후속 강의 선택 질문
답변 감사합니다. Spring boot 부터 수강해보도록 하겠습니다.
- 0
- 2
- 242
질문&답변
2020.05.02
Converter, Formatter의 bean 등록 시 test code 통과와 관련한 질문
친절한 답변 감사합니다. 큰 도움이 되었습니다.
- 0
- 4
- 360
질문&답변
2020.04.30
Converter, Formatter의 bean 등록 시 test code 통과와 관련한 질문
말씀하신대로 @WebMvcTest에 관한 문서를 확인했으며 Converter는 @WebMvcTest configuration에 포함되는 것을 알게 되었습니다. 따라서 Converter class는 bean으로 등록하지 않아도 정상 동작 하는 것에 대해서는 납득이 되었습니다. Using this annotation will disable full auto-configuration and instead apply only configuration relevant to MVC tests (i.e. @Controller, @ControllerAdvice, @JsonComponent, Converter/GenericConverter, Filter, WebMvcConfigurer and HandlerMethodArgumentResolver beans but not @Component, @Service or @Repository beans). 다만 아직까지 풀리지 않은 점은 문서상에서 @WebMvcTest는 @Controller bean들을 configuration에 포함한다고 되어있는데 Formatter를 bean으로 등록하는 경우 @WebMvcTest에 Formatter class뿐 아니라 Controller class(EventController.class)를 포함하지 않으면 test code를 통과할 수 없다는 것입니다. 왜 그러는 것일까요?
- 0
- 4
- 360
질문&답변
2020.04.29
MessageSource 실습 중 실행창에 물음표로 출력되는 현상 질문
결국 원인은 못찾았고 프로젝트를 새로 만들어서 해결했습니다.
- 0
- 6
- 917
질문&답변
2020.04.18
MessageSource 실습 중 실행창에 물음표로 출력되는 현상 질문
message resource 내용이 깨진것을 확인했습니다. 이를 되돌리고 다시 test했으나 여전히 정확히 읽어오지는 못하네요. 좀더 연구해봐야겠습니다.
- 0
- 6
- 917
질문&답변
2020.04.18
MessageSource 실습 중 실행창에 물음표로 출력되는 현상 질문
빠른 답변에 감사드립니다. encoding과 관련한 여러가지 시도를 해봤지만 모두 실패했습니다. 1. intellij의 file > setting > Editor > File Encodings 에서 인코딩을 UTF-8로도 변경해보고 2. project의 ~.vmoptions file에서 VM option으로 -Dfile.encoding=UTF-8도 설정해봤습니다. 추가로 확인된 사항은 runner class에서 stdio로 콘솔에 단순 문자열을 출력해도 한글이 깨져서 출력됩니다. message resource를 출력할 때는 ????형태였지만 이 것은 완전히 깨진 형태입니다. 혹시 이 것이 message resource에 문제가 발생하는 원인이 아닐까 조심스럽게 예상해봅니다. (사진) 테스트 하던 중 특이한 점을 하나 발견했는데 intellij를 실행해서 최근 project를 자동으로 load 할 때 최대한 빠르게 application을 실행하면 stdio를 통한 문자열 출력이 정상적으로 진행 된다는 것입니다. (사진) 이것으로 미루어보아 build tool 실행 중에 어떤 문제가 발생하는게 아닐까 생각됩니다만 도무지 찾아낼 수가 없네요. 기선님의 강의와는 다르게 build tool로 gradle을 사용했습니다만, 또 다른 gradle을 사용한 project에서는 한글 콘솔출력이 깨지지 않음을 확인했습니다. 문제의 Project를 올린 Gihub repository를 공유해 드립니다. https://github.com/camel-master/SpringExample.git 감사합니다.
- 0
- 6
- 917