단위테스트를 해야하는 영역은 어디까지일까?
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tài liệu
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- java
- Lĩnh vực
- testing-qa
Hướng nghiên cứu
Bắt đầu bằng việc xem xét các tài nguyên TDD được liên kết trong issue và các ví dụ về Java service và exception-test được đưa vào phần nội dung. So sánh mục đích được nêu của test với hướng dẫn testing của dự án, sau đó ghi lại một quy tắc rõ ràng để quyết định hành vi nào của service cần được bao phủ và bằng chứng nào sẽ cho thấy hướng dẫn đã đầy đủ.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
이슈
단위테스트를 진행하면서 단위테스트를 어디까지 진행해야하는지에 대한 의문이 생겼다.
Service단의 단위테스트를 진행할 때 예외 처리 단위 테스트 또한 진행하는데 만약 다음과 같은 코드가 있다면 해당 코드를 단위 테스트를 해주는 것이 과연 효과적인 걸까?
다음은 Service 단의 코드이고
public List<...> getSth(String userId) throws BaseException {
Users user = usersRepository.findById(userId)
.orElseThrow(() -> new BaseException(BaseResponseStatus.EMPTY_BY_USER_ID));
...
아래는 해당 메서드의 예외 테스트 코드이다.
@Test
@DisplayName("Invalid User Id 테스트")
void invalid_userId_test() {
// given
given(fakeUsersRepository.findById(any())).willReturn(Optional.empty());
// when
String userId = "admin";
// then
assertThatThrownBy(() -> smtService.getSth(userId))
.isInstanceOf(BaseException.class);
}
여기서의 테스트는 UsersRepository에서 Optional.empty()가 나왔을 때 getSth() 메서드 안에 있는 orElseThrow()가 정상작동 하는지를 보는 테스트라고 생각한다.
그렇다면 해당 테스트는 개발자의 손을 벗어난 라이브러리 단의 기능이 정상 작동하는지 테스트하고 있는게 아닐까? 즉 테스트 할 필요가 없는 부분 아닐까?
문제는 일단 개발자가 어디까지 테스트를 해야하는지에 대한 개념이 잡혀있지 않다.
이 개념이 테스트 코드를 작성하는데 가장 중요한데 방법적인 부분만 알고 핵심을 모르고 있다는 생각이 든다.
테스트 코드의 '목적'에 대한 공부가 필요하다.
공부해볼 내용
- 테스트 코드를 실행해야 하는 범위
- 좋은 테스트 코드란 무엇인가?
- Clean Code 책을 봐보자
- Ngôn ngữ chính
- Không có dữ liệu ngôn ngữ
- Star
- 0
- Fork
- 0
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của minaver/Daily-Issue
-
MSA에 대하여Đang mởSpring
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
minaver/Daily-Issue#10 · 1 bình luận ·
-
커넥션 풀과 트랜잭션에 대한 통찰이 필요하다.Đang mởDB Spring
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
minaver/Daily-Issue#9 ·
-
형식을 명시하여 컴파일 시점에 에러를 찾아낼 수 있는 방법Đang mởJava Spring
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
minaver/Daily-Issue#7 ·
-
TDD
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
minaver/Daily-Issue#5 · 1 bình luận ·
-
Tech
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
minaver/Daily-Issue#3 ·
Tất cả issue của minaver/Daily-Issue
Issue tương tự
-
skillopt: success-reflect prompt omits the edit schema, so every success-only edit is droppedĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
dimitar-radenkov/Pointframe#294 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area: android good first issue help wanted testing
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Gautam-aman/ResQNet#56 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug dx
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
DewaldOosthuizen/tech-cheat-sheets-and-notes#390 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
e2e-failure ready-to-code
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 73/100
redhat-developer/rhdh-plugin-export-overlays#4470 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày