"회원 리포지토리 테스트 케이스 작성" 강의 중 12분쯤 findByName()을 실행할 때 findAll()에서 만든 member1,member2가 불러와져서 테스트를 통과하지 못하고 하셨는데 이 부분이 이해가 잘 가지 않습니다. findByName()의 assertThat(result).isEqualTo(member1); 부분에서 예외가 발생합니다. 그런데 왜 첫번째 줄 Member member1 = new Member(); 에서 실행을 멈추지 않고 실행이 계속되나요? 이미 같은 변수이름(findAll()에서 만들어진 member1, member2)이 있음에도 불구하고 예외가 발생해야 맞는데 왜 정상적으로 실행되어서 assertThat(result).isEqualTo(member1); 까지 내려가서 예외가 발생하나요? findByName()의 assertThat(result).isEqualTo(member1); 가 각각 어떤 객체인지 헷갈립니다. member1은 findAll()에서 만들어진 것이고, result는 findByName()의 첫번째 줄에서 만들어진건가요? 이것도 이해가 가지 않는게 clear()가 없는 상태에서 member1을 또 만들면 이름이 중복되는데 왜 예외가 발생하지 않나요?? package hello.hellospring.repository; class MemoryMemberRepositoryTest { MemoryMemberRepository repository = new MemoryMemberRepository(); @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); } } 그리고 memberService.join(member1); package hello.hellospring.service; class MemberServiceTest { MemberService memberService = new MemberService(); @Test void 회원가입() { //given Member member = new Member(); member.setName("spring"); //when Long saveId = memberService.join(member); //then Member findMember = memberService.findOne(saveId).get(); assertThat(member.getName()).isEqualTo(findMember.getName()); } @Test public void 중복_회원_예외() { //given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); //when memberService.join(member1); IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2)); assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); } } 회원 서비스 테스트 강의에서도 비슷한 질문이 있습니다. 11분 50초 경에 memberService.join(member1);에서 예외가 발생한다고 하셨는데 그 이유를 잘 모르겠습니다. member1, member2의 이름을 spring으로 만들고나서 member1을 join할 때는 레포지토리에 아무런 값이 없으므로 예외가 발생할 이유가 있나요? 오히려 assertThrows(IllegalStateException.class, () -> memberService.join(member2)); 에서 중복으로 인해 예외가 발생해야하지 않나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 회원 가입 페이지와 회원목록은 잘 나오는데 save에서 계속 500 오류가 뜨네요 ㅠㅠ 강의랑 똑같이 따라친거같은데 왜 오류가 발생하는지 모르겠습니다.오류코드는 이렇게 뜹니다. 2024-01-11T19:21:07.392+09:00 ERROR 31571 --- [nio-8080-exec-2] a.c.c.C.[.[.[.[frontControolerServletV5] : Servlet.service() for servlet [frontControolerServletV5] in context with path [] threw exception
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 테스트 코드 실행시 무한 로딩 미해결 3일차 해결 방법이 필요합니다. package hello.jdbc.connection; public abstract class ConnectionConst { public static final String URL = "jdbc:h2:tcp://localhost/~/study/test"; public static final String USERNAME = "sa"; public static final String PASSWORD = "1318!"; }
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 수업 내용 중에서 스프링 빈 조회 테스트 코드를 짤 때, 동일한 타입이 둘 이상인 경우에는 public class ApplicationContextSameBeanFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(SameBeanConfig.class); @Test @DisplayName("타입으로 조회 시 같은 타입이 둘 이상 있으면, 빈 이름을 지정하면 된다.") void findBeanByName() { MemberRepository memberRepository = ac.getBean("memberRepository1", MemberRepository.class); assertThat(memberRepository).isInstanceOf(MemberRepository.class); } } 인스턴스를 비교할 때 인터페이스인 MemberRepository.class를 사용해줬는데, 상속 관계 설명 시에는 public class ApplicationContextExtendsFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class); @Test @DisplayName("부모 타입으로 조회 시 자식이 둘 이상 있으면, 빈 이름을 지정하면 된다.") void findBeanByParentTypeBeanName() { DiscountPolicy rateDiscountPolicy = ac.getBean("rateDiscountPolicy", DiscountPolicy.class); assertThat(rateDiscountPolicy).isInstanceOf(RateDiscountPolicy.class); } } 구체화 타입인 RateDiscountPolicy.class로 인스턴스를 확인한 이유가 뭔지 궁금합니다.
안녕하세요. 강의 듣기 시작한 수강생 입니다 ㅎㅎ 강의 듣기전에 코드도 한번 살펴보고 검색폼 1강의도 들었는데요 아무리 봐도 View.js 파일에서 class 내부의 constructor의 매개변수로 전달되는 element가 뭔지 잘 모르겠습니다... View 클래스로 인스턴스를 만들때 인수로 전달한 것이 element로 들어가는걸로 알고 있는데 View 클래스로 생성한 인스턴스를 못 찾겠습니다ㅠㅠ 그리고 제가 JS랑 리액트를 다른 강의로 한 번 보고 복습하면서 선생님 강의를 듣고 있는데요 후기글처럼 초반 JS 부분이 어렵긴합니다 내용이나 코드가 이해는 되고 어떤 코드가 어떤 역할을 하고 어떤 코드를 이 스크립트에 작성하는지 이런건 어느정도 파악하면서 듣고 있는데요 막상 제가 이런 모듈을 만들고, 커스텀 이벤트 객체를 생성해서 자바스크립트로 프로젝트를 만들어보려고 했을때는 코드를 어떻게 쳐야 할지 막막할 것 같은데 혹시 강의를 어떤 방법으로 수강하고, 복습은 어떤식으로 하면 좋을지 조언 부탁드릴 수 있을까요?
설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
// Step 5. Core (Counter) (Ref Chapter 11) reg [6:0] cnt_always; assign is_done = o_running && (cnt_always == num_cnt-1); always @(posedge clk or negedge reset_n) begin if(!reset_n) begin cnt_always <= 0; end else if (is_done) begin cnt_always <= 0; end else if (o_running) begin cnt_always <= cnt_always + 1; end end 마지막에 fsm에 counter를 붙이는 부분의 코드입니다! 궁금한 점이 is_done 신호를 assign으로 할당할 때 o_running과 &&로 묶으셨는데 왜 그런지 알 수 있을까요?? assign is_done = o_running && (cnt_always == num_cnt-1); 저는 이 코드에서 o_running의 필요성을 모르겠어서 그냥 카운터의 cnt한 값과 사용자가 입력한 값이랑 같으면 수행은 끝났으니 is_done 신호를 보내면 되겠다 해서 o_running은 빼고 assign is_done = (cnt_always == num_cnt-1); 로 고쳐 돌렸는데 결과는 같게 나오더군요 그렇지만 맛비님이 왜 두개를 같이 묶으셨는지가 궁금합니다!
안녕하세요, 첫번째 else 문에서 바로 pop을 해줘도 오류가 나지 않는 이유, 두번째 if문에서 stack.isEmpty() 체크를 해주지 않는 이유가 무조건 처음 한번은 '(' 괄호가 들어가기 때문인가요? for (int i = 0; i < arr.length; i++) { if (arr[i] == '(') stack.push(arr[i]); else { stack.pop(); if (arr[i - 1] == '(') answer += stack.size(); else answer++; } } import java.util.*; public class Main { public int solution(String str) { int answer = 0; Stack<Character> stack = new Stack<>(); char[] arr = str.toCharArray(); for (int i = 0; i < arr.length; i++) { if (arr[i] == '(') stack.push(arr[i]); else { stack.pop(); if (arr[i - 1] == '(') answer += stack.size(); else answer++; } } return answer; } public static void main(String[] args) throws Exception { Main T = new Main(); Scanner kb = new Scanner(System.in); String str = kb.next(); System.out.println(T.solution(str)); } }
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] java 17, gradle 8.5 를 사용하고 있는데 갑자기 실행이 안됩니다. Execution failed for task ':ServletApplication.main()'. > Process 'command '/Users/gangminhui/Library/Java/JavaVirtualMachines/corretto-17.0.9/Contents/Home/bin/java'' finished with non-zero exit value 1 * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.5/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD FAILED in 2s 3 actionable tasks: 1 executed, 2 up-to-date
파일을 들어갈때마다 중괄호가 저런식으로 길게 배치가 되더라고요 혹시 public MemberController(MemberService memberService) { this.memberService = memberService; } 이렇게 작성할 수 있게 할 수 있을까요? 궁금합니다. 그리고 김영한님 강의를 보면 자동으로 import가 되는걸 볼 수 있는데 저는 일일히 option + enter로 import시키고 있습니다. 어떻게하면 김영한님처럼 자동으로 import 할 수 있을까요?