Skip to content

[5주차] 테스트 코드 작성 및 커버리지 측정#102

Merged
DongHyunKIM-Hi merged 13 commits intohanghae-skillup:somin-jeongfrom
somin-jeong:main
Feb 11, 2025
Merged

[5주차] 테스트 코드 작성 및 커버리지 측정#102
DongHyunKIM-Hi merged 13 commits intohanghae-skillup:somin-jeongfrom
somin-jeong:main

Conversation

@somin-jeong
Copy link

제목(title)

[5주차] 테스트 코드 작성 및 커버리지 측정

작업 내용

  • xxxControllerTest 에서 통합 테스트 코드를 작성했습니다. 통합 테스트를 통해 예외가 발생되는 상황을 모두 테스트 하였습니다.
  • jacoco를 통해 테스트 커버리지를 측정했습니다.

발생했던 문제와 해결 과정을 남겨 주세요.

ex) 문제 1 - 다수의 사용자가 동시에 같은 리소스를 업데이트할 때 재고 수량이 음수로 내려가는 데이터 불일치 문제 발생
해결 방법 1 - Redis SET 명령어에 NX(Not Exists)와 PX(Expire Time) 옵션을 활용해 락을 설정했습니다. 이유는 ~

이번 주차에서 고민되었던 지점이나, 어려웠던 점을 알려 주세요.

과제를 해결하며 특히 어려웠던 점이나 고민되었던 지점이 있다면 남겨주세요.

  • ./gradlew clean test를 통해 테스트 수행할 때 test/resources/application.yml에 들어갈 환경 변수를 어떻게 넣어줘야 하나요? 프로젝트 루트에 .env 파일을 추가해줬는데 제대로 적용이 안되는 것 같습니다.

리뷰 포인트

리뷰어가 특히 의견을 주었으면 하는 부분이 있다면 작성해 주세요.

ex) Redis 락 설정 부분의 타임아웃 값이 적절한지 의견을 여쭙고 싶습니다.

  • 통합테스트에서 실제 DB에 값이 잘 들어가는지 확인하기 위해 mockmvc가 아닌 resttemplate을 사용하였는데 보통 어떤 것을 주로 사용하나요?

기타 질문

추가로 질문하고 싶은 내용이 있다면 남겨주세요.

ex) 테스트 환경에서 동시성 테스트를 수행하였고, 모든 케이스를 통과했습니다. 추가할 테스트 시나리오가 있을까요?

@DongHyunKIM-Hi
Copy link

좋은점

  • 전반적으로 많은 케이스를 고려해서 테스트 코드를 작성해주신 것 같습니다.

리뷰

./gradlew clean test를 통해 테스트 수행할 때 test/resources/application.yml에 들어갈 환경 변수를 어떻게 넣어줘야 하나요? 프로젝트 루트에 .env 파일을 추가해줬는데 제대로 적용이 안되는 것 같습니다.

build.gradle에 환경 변수를 지정해주는 형식으로 해줘도 될 것 같습니다. 그리고 테스트 환경에서 실제 상용 디비를 보통은 사용하지 않아요. H2 라는 인메모리 디비를 통해서 테스트를 진행하는 편입니다.

통합테스트에서 실제 DB에 값이 잘 들어가는지 확인하기 위해 mockmvc가 아닌 resttemplate을 사용하였는데 보통 어떤 것을 주로 사용하나요?

위의 내용과 비슷하지만 테스트 환경에서는 상용 환경의 디비와 연결 시켜서 테스트하지 않습니다. 그때 사용하는 방식으로는 h2 인메모리 디비를 통해서 테스트를 진행합니다. 절대 테스트로 인해서 상용 데이터가 변경되는 가능성을 원천 봉쇄 합니다.

@DongHyunKIM-Hi DongHyunKIM-Hi merged commit b95c92a into hanghae-skillup:somin-jeong Feb 11, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants