묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
org.opentest4j.AssertionFailedError: Expected java.lang.IllegalStateException to be thrown, but nothing was thrown 에러 발생
안녕하세요 강사님. 아래와 같은 에러가 발생하여 질문 남깁니다. 로그의 뜻 "예외가 발생해야 하지만, 발생하는 부분이 없음" 으로 이해됩니다. 하지만, 소스의 어느 부분이 수정되어야할지 잘 모르겠습니다. 도움 부탁드립니다. 감사합니다. **** 로그 org.opentest4j.AssertionFailedError: Expected java.lang.IllegalStateException to be thrown, but nothing was thrown. at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:71) at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:37) at org.junit.jupiter.api.Assertions.assertThrows(Assertions.java:3007) at com.inflearn.memberManage.service.MemberServiceIntegrationTest.중복_회원_예외(MemberServiceIntegrationTest.java:52) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688) at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84) at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) ** 테스트 소스 @Testpublic void 중복_회원_예외() { //given Member member1 = new Member(); member1.setName("namely5"); Member member2 = new Member(); member2.setName("0000"); //when memberService.join(member1); IllegalStateException e = assertThrows( IllegalStateException.class, () -> memberService.join(member2)); assertThat(e.getMessage()).isEqualTo("이미존재하는 회원입니다.");
-
미해결스프링 핵심 원리 - 기본편
테스트의 중요성
안녕하세요. 고퀄리티 강의 항상 잘 듣고 있습니다. 테스트에 대한 중요성을 영상 중간중간 자주 역설하시는데. 테스트에 대해서만 깊게 학습하기 위해 참고할만 한 서적이나 영상(강의, 유튜브 등) 추천해 주실 만한건 없을까요~?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
[해결]테이블 생성이 잘 됐는지 테스트하는 방법 문의
우연히 강사님의 다음 댓글을 읽고 의문이 해소되었습니다.. "실무에서는 개발과 운영의 테이블을 생성할 때, JPA가 생성해주는 테이블은 신뢰하지 마시고, 참고만 하고 직접 생성해야 합니다. 그래서 실무에서는 크게 고민하시지 않아도 됩니다^^" --------------------------------- 매번 귀찮은 질문 답변해주셔서 감사합니다. '테이블', '테이블 테스트'라는 키워드로 조회해도 나오지 않아 문의드립니다. [엔티티 클래스 개발2] 강의 중 JPA가 테이블을 생성하고 h2에서 제대로 테이블이 생성됐는지 눈으로 확인하는 시간이 있습니다. 그런데 이걸 눈으로 확인하는 것이 아니라, 테스트 코드를 작성해서 자동으로 확인할 수 있는 방법이 있는 궁금합니다. 감사합니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
에러는 아니고 궁금해요
레파지토리에 만든 기능 테스트 할때 선생님은 콘솔에 이런식으로 모든 기능을 하나하나 확인할 수 있던데 저는 달랑 이거 하나 나와여 ㅠ 왜그런걸까요 ? 코드 PDF에 있는거 그대로 가져다 썼는뎅..
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품 서비스 테스트코드
안녕하세요 선생님! 혼자 복습하다가 문득 호기심이 생겨, 상품 서비스의 테스트를 진행해보다 . @SpringBootTestclass ItemServiceTest { @Autowired private ItemService itemService; @Test void 상품_등록() { Book book = new Book(); book.setName("jpa"); book.setPrice(10000); Long itemId = itemService.saveItem(book); Assertions.assertThat(book).isEqualTo(itemService.findOne(itemId)); }} 이렇게 되면 테스트가 실패하는데 그 이유가 객체 타입이 달라서 그런건가요? 테스트 코드의 객체는 Book이고 service 계층에서의 반환형은 Item이라 생각하여 Repository 계층과 Service 계층의 반환형을 모두 Book으로 해도 테스트가 실패합니다. 혹시 이유를 알 수 있을까요?
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
프로필 뷰 에러는 어떻게 테스트 해볼 수 있을 까요?
이번 강좌에서 존재하지 않는 닉네임으로 접근하면 IllegalArgumentException 이 발생하는데 어떻게 해야 테스트를 할수 있을까요? mockMvc.perform(get("/profile/{nickname}", nickname)) .andExpect(result -> assertTrue(result.getResolvedException() instanceof IllegalArgumentException)); 이렇게 하면 에러를 캐치하지 못하고 assertThrows(IllegalArgumentException.class, () ->mockMvc.perform(get("/profile/{nickname}", nickname))); 이방식으로는 스프링 래퍼 클레스인 <org.springframework.web.util.NestedServletException>이 발생했다고 나옵니다 org.assertj.core.api.Assertions.Assertions.assertThatThrownBy(() -> mockMvc.perform(get("/profile/{nickname}", nickname))).hasCause(new IllegalArgumentException()); 이건 에러메세지 까지 비교하는데 어떤방법으로 테스트 하는게 좋을까요? 참고 : https://www.baeldung.com/junit-assert-exception https://www.python2.net/questions-151506.htm
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
[해결됨]통합 테스트 시 회원가입 db연동이 안되는데 이유를 모르겠습니다 [해결]
[현재 해결했습니다!] 안녕하세요 강의 잘 듣고 있습니다! 스프링 통합 테스트 부분을 듣는 중, 회원가입 테스트코드를 실행시킨 후, h2 데이터베이스를 봤더니 'spring'이라는 이름의 회원이 db에 등록이 되지 않아 질문드립니다. 그전까진 데이터베이스에 3명 회원 연동도 잘 됐는데, 왜 이번엔 db연동이 안되는지 모르겠습니다. 우선 아래 사진들만 첨부하겠습니다. 필요한 사진 및 내용이 있으시면 답변에 달아주시면 바로 추가하겠습니다! 감사합니다. ------------------------------------------------------------------------------------- 강의를 3분정도 더 들어보니 transactional 어노테이션이 db 롤백을 해주는군요 좀 더 들어보고 질문을 할 걸 그랬나봅니다. 항상 수업 잘 듣고있습니다! 감사합니다.