66,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결더 자바, 애플리케이션을 테스트하는 다양한 방법
동시성 테스트는 어떻게 작성해야하는지 궁금합니다.
안녕하세요. 올려주시는 강의 잘듣고 도움 많이 받아 항상 감사드립니다.@Transactional의 isolation, propagation 옵션에 대한 공부를 위한 학습 테스트를 작성해보고 싶은데요. (실제 업무에서도 동시성과 관련된 테스트 커버리지를 향상시키고 싶습니다)두 개의 쓰레드가 하나의 인스턴스에 동시에 접근하는 케이스에 대한 테스트를 작성하고 싶습니다. TransactionManager를 직접 핸들링하는건 올바른 방법은 아닐 것이라고 생각하는데, 테스트 코드 작성 단계에서 동시성 테스트를 지원하는 기능이 있을까요?JUnit5나 Mockito 라이브러리만을 활용해서 해결할 수 있는 방법이 있을지 궁금하여 질문드립니다!
- 미해결더 자바, 애플리케이션을 테스트하는 다양한 방법
안녕하세요, 테스트의 displayName 관련 질문이 있습니다!
@DisplayName("가나다라") @ParameterizedTest(name = "{displayName} : a => {0}, b => {1}") @CsvSource(value = {"2, true", "1, false"}) void aa(final int a, final boolean b) { assertThat(a == 2).isEqualTo(b); }여기서 테스트 결과가 뜰 때, {displayName} 이 아예 없는 것으로 나옵니다. 혹시나 해서 다른거 다 빼고 {displayName} 만 넣으면 @DisplayName("가나다라") @ParameterizedTest(name = "{displayName}") @CsvSource(value = {"2, true", "1, false"}) void aa(final int a, final boolean b) { assertThat(a == 2).isEqualTo(b); }메서드 이름이 아닌 이름 없음으로 뜹니다.구글 검색해보면 해결책이 전부'Build, Execution, Deployment -> Build Tools -> Gradle로 이동한 다음 Run tests using 을 Gradle -> Intellij IDE 로 수정'이렇게 수정하라는 글밖에 없습니다.전 사정이 있어서 컴파일 및 빌드 실행을 Gradle로 실행을 하면서 테스트해야만 하는데, 다른 방법이 있는지 궁금합니다.
- 미해결더 자바, 애플리케이션을 테스트하는 다양한 방법
intellij 테스트 실행시 engine 이 나오게 하는 방법이 궁금합니다.
저 같은 경우 아래 사진 처럼 나오지 않아서 질문드립니다. 설정을 찾아봐도 관련된 설정이 없어서 문의드립니다. 아니면 버전이 업그레이드 되면서 사라진것일까요?
- 미해결더 자바, 애플리케이션을 테스트하는 다양한 방법
thenThrow() 안에는 runtime 익셉션만 선언가능한가요?
안녕하세요. 기선님테스트 코드 작성은 처음이라 강의를 들으며 해보고 있는 수강생 입니다 !다름이 아니라 throw 부분에 ioException이나 sqlException을 실행시키고 싶은데 에러엔 org.mockito.exceptions.base.MockitoException:Checked exception is invalid for this method! 이렇게만 뜨더라구요 근데 runtime 익셉션은 정상적으로 실행되는 걸 보면서 thenthrow는 unchecked 익셉션만 가능한건지 궁금증이 생겼습니다. 혹시 ioException이나 sqlException 처럼 checked 익셉션을 실행하고 싶으면 어떻게 하면 좋을까요?사정상 코드의 내용을 상세히 첨부할 수 없지만 대략적으로 올려봅니다 @DisplayName("3. 실패 : DB insert 오류") public void 실패_DB_insert_오류() { //given //특정 객체 생성 when(특정 서비스).thenThrow(new sqlException()); //then - 실패 결과 assertThrows(sqlException.class, () -> { log.info("!! DB insert 오류 !! "); //when - 프로세스가 진행 }); // verify를 통해 해당 프로세스 최소 1번 호출 되었는지 확인 verify(kosService,atLeastOnce()).특정 서비스); }
- 미해결더 자바, 애플리케이션을 테스트하는 다양한 방법
안녕하세요 @BeforeAll관련해서 질문이 있습니다.
안녕하세요 강의 감사히 잘보고 있습니다. 1.통합 테스트 작성중에 @BeforeAll를 사용하여 필요한 엔티티들을 DB에 넣었는데 , 롤백이 되지 않습니다. 테스트 클래스가 종료된 이후에 롤백되게끔 할 수 있는 방법이 있을까요??
- 미해결더 자바, 애플리케이션을 테스트하는 다양한 방법
Test 중단 방법(?)
안녕하세요, 궁금한게 계속 많이 생기네요 ㅎㅎ; 하나의 @Test 메소드 내에서 테스트 검증이 실패되면 중단되는데, (assertAll을 사용하지 않았을 때 ㅎ) 근데, 이렇게 검증 실패시 중단되는 과정이 테스트 메소드 별로도 하고 싶은데 혹시 방법을 아실까요? 예) @TestInstance, @TestMethodOrder를 사용한 예제입니다 아래와 같이 테스트 메소드가 3개있다고 할 때, test1 에서 검증이 실패하면, test2와 test3은 실행하고 싶지 않은데 좋은 방법이 있다면 공유 부탁드려봅니다.. ㅠㅠ @Test @Order(1) test1 @Test @Order(2) test2 @Test @Order(3) test3
- 미해결더 자바, 애플리케이션을 테스트하는 다양한 방법
junit 프로퍼티
junit-platform.properties 파일은 어떻게 설정파일을 읽어드리는걸까요? 만약 프로퍼티 파일명을 바꾸게 된다면, 어떻게 설정을 해야하는지 궁금합니다
- 해결됨더 자바, 애플리케이션을 테스트하는 다양한 방법
강의 섹션별 Git Code
Git Code를 보니.. 전체적으로 완성된 코드만 있는 것 같은데 아직 JUnit 까지밖에 보지 않았다면, 그에 대한 코드가 나뉘어져있지 않은 것 같아서요.. 강의를 따라가면서 얼추 작성하고 따라할 수는 있지만 섹션별로 코드가 구분되어있다면 좋을 것 같습니다.. !
- 해결됨더 자바, 애플리케이션을 테스트하는 다양한 방법
Gradle 프로젝트
Run - Edit Configurations 창을 열면 강사님처럼 JUnit 탭이 없고 Gradle 설정 창에 Test가 있습니다. 이 구조에는 테스트 Kind 설정하는 부분이 없는데, 어떻게 해야하나요? 스프링부트는 2.5.4 버전입니다.
- 해결됨더 자바, 애플리케이션을 테스트하는 다양한 방법
강의 문서
인프런을 이 강의를 통해 처음 가입을 하게 되었는데, 강의하실 때 우측에 키는 강의 문서는 어디서 다운받아서 볼 수 있나요?
- 미해결더 자바, 애플리케이션을 테스트하는 다양한 방법
if나 case를 통한 분기와 Assumptions의 차이점 문의
강의 중 환경변수에 따라서 테스트가 실행되는 것을 확인하였습니다. 궁금한점은 이렇게 assumingThat과if, switch를 통한 분기문으로 TEST하는 것에서 어떤 차이점이 있는지 궁금합니다.혹은 어떤 이점이 있는지도 궁금합니다.스스로 학습해보길 권장하신다면 키워드라도 잡아주시면 큰 도움 될 것 같습니다. 감사합니다. 가족과 함께 항상 건강하세요 ^_ ^
- 해결됨더 자바, 애플리케이션을 테스트하는 다양한 방법
Study .setOwnerId( id ) 로 예제를 구성하신 이유가, 특정한 시나리오를 가정하기 때문인가요?
보통 JPA 예제들은 연관관계를 위해 `연관관계 인스턴스(member)` 를 포함하도록 구성합니다. 강의 예제에서는 Study 가 memberID 만 갖도록 구성하신 배경에 대한 설명이 없는것 같아서 질문드리게 되었습니다. 질문입니다. 실무 간 필요한 상황에서는, 예제와 같이 ID 만 넣어두고 개발을 진행하다가, 나중에 Study 필드를 수정하기도 하는지요?이 부분에 대해, 비슷한 실무간에 생기는 사례가 궁금합니다.( 단순히, MemberRepository 가 없기 때문에, ID 를 넣어서 연관관계를 표현하신건가요? 그렇다면, 단순히 id 만 받아 저장하도록 고쳐야겠네요) 읽어주셔서 감사합니다.
- 미해결더 자바, 애플리케이션을 테스트하는 다양한 방법
Mock에 Stubbing 중 발생하는 에러
안녕하세요 백기선님, 강의 재밌게 잘 듣고 있습니다! 강의를 듣고 개인 프로젝트를 공부하는 도중 적용하다가 문제가 발생했는데, 이유를 여쭙고 싶어서 이렇게 질문을 남기게 되었습니다. <테스트하려는 메서드> <테스트 메서드> <ChatRoom 엔티티> <에러 내용 중 일부> ``` shell Strict stubbing argument mismatch. Please check: - this invocation of 'save' method: chatRoomRepository.save( com.example.practice.chatRoom.ChatRoom@252f626c ); -> at com.example.practice.chatRoom.ChatRoomService.createChatRoom(ChatRoomService.java:39) - has following stubbing(s) with different arguments: 1. chatRoomRepository.save( com.example.practice.chatRoom.ChatRoom@20e6c4dc ); ``` 위와 같이, ChatRoomRepository(JpaRepository 상속)의 save() 메서드를 Stubbing 하는 과정에서 문제가 발생했습니다. 테스트하려는 메서드(createChatRoom(Member loginMember, ChatRoomRequest chatRoomRequest))) 내부에서 chatRoomRepository.save() 메서드에 매개변수로 생성자를 바로 넣어줘서 그런걸까요? 원인을 잘 모르겠습니다.. 😭 추가적인 질문으로, 테스트하려는 `createChatRoom()` 메서드는 보시는 바와 같이 `chatRoom`을 생성하고, `Boolean` 값을 리턴합니다. 하지만 테스트 코드의 경우 대부분 리턴값이나 발생하는 예외클래스에 의존하기에, 보통 서비스 레이어의 메서드에서 이러한 `Boolean` 값은 의미가 덜하다는 느낌을 받았습니다. 서비스 레이어의 메서드에서는 보통 특정 도메인에 관련된 객체나 컬렉션 등을 반환하는게 더 좋은 코드일까요? 질문 읽어주셔서 감사합니다. 좋은 주말 되세요 :)
- 미해결더 자바, 애플리케이션을 테스트하는 다양한 방법
제 블로그에 공부 내용을 정리해도 될까요?
안녕하세요. 더 자바, 애플리케이션을 테스트하는 다양한 방법 강의를 듣고 있습니다!! 혹시 여기서 배운 내용들을 제 블로그에 정리해서 올려도 될지 궁금합니다!! 코드도 똑같이 사용하고, 설명해주시는 것들도 정리하고 싶은데 가능한지 궁금합니다! 감사합니다!!!!!
- 미해결더 자바, 애플리케이션을 테스트하는 다양한 방법
@Order와 @Order가 없는 순서가 있는 케이스
동영상에서는 테스트별로 @Order가 있는 경우만 설명을 하신거 같아서, 한번 궁금해서 @Order와 있는 경우와 @Order 없는 경우를 한번 테스트해봤습니다. 뭔가 무작위 순위로 실행되는거같기도 하고 아닌거 같은데 매번 실행하면 같은 순서로 실행이 되는거 같더라구요. (실행속도로 정렬로 해서 되는것도 아닌거 같고요.) 현재 테스트는 A method - @order가 없는 메소드 B method - @Order(1), C method - @order가 없는 메소드, 총 3개의 메소드를 실행했고, 순서는 C,B,A 순서로 실행되었는데 왜 이렇게 실행이 되는지 궁금합니다.
- 미해결더 자바, 애플리케이션을 테스트하는 다양한 방법
enum은 또 "이늄"인가요?
미국 사시는게 맞는지 심히 궁금하네요. "enum" 은 또 "이늄"인가요?"sometimes"는 본토 발음으로 "소메티메스" 맞죠? 아무리 개발 강의라지만 너무하시네요.
- 미해결더 자바, 애플리케이션을 테스트하는 다양한 방법
"assume" 발음이 "어줌"인가요?
미국에서 직장다니신다고 들었는데, 본인 계신 곳에서는 assume을 "어줌"이라고 발음하나요? 본인만의 발음인가요? 콩글리시인가요? 아니면 서부 사투리인가요?
- 해결됨더 자바, 애플리케이션을 테스트하는 다양한 방법
검색을 해도 해결이 안되어 질문드립니다
먼저 에러코드입니다 java.lang.NoSuchMethodError: org.junit.jupiter.api.extension.ExtensionContext.getRequiredTestInstances()Lorg/junit/jupiter/api/extension/TestInstances; 실행코드입니다 현재 인텔리제이를 쓰고있으며 스프링부트는 2.0.1입니다 강의를 들으며 학습을 할때는 최신버젼을 썻는데 실무에 적용하다 에러가 나서 질문드립니다 검색을 하여보니 부트 2.2.1전에는 junit4를 의존한다길레 maven에서 4를 exclude하고 5를 가져왔습니다 버젼은 junit5.7.2버젼입니다 험난한 과정을 거쳐 의존성주입에는 성공하였고 현재 프로젝트에서 jupiter피일이 잘 열리기도합니다 하지만 테스트에 실패합니다 스택오버플로우나 검색을하여도 junit의 버젼을 최신버젼으로 두라는게 답변의 전부이더군요 혹시나 하는마음에 질문드립니다...ㅠ
- 미해결더 자바, 애플리케이션을 테스트하는 다양한 방법
test 환경의 다른 컨테이너(Mock 어플리케이션)
안녕하세요. 좋은 강의 올려주셔서 감사합니다. 테스트 시에 다른 컨테이너 (Mock 어플리케이션)가 오래걸릴 수 있어 Wait을 잘 설정해야 한다고 하셨는데요. 보통 DB가 아닌 다른 컨테이너는 파이썬이나 node.js 으로 만드나요?? 스프링 부트로 만들면 어플리케이션 구동이 오래걸릴 것 같아서요. 관련 경험이 있으시면 공유 부탁드립니다. 감사합니다.
- 미해결더 자바, 애플리케이션을 테스트하는 다양한 방법
중복 저장
mock 객체 만들어서 restful 호출했더니 왜 중복으로 저장이 될까요? postman으론 한번 저장되던데