이미 내 프로그램에 대한 통합 테스트를 받았고 모두 통과 한 경우 제대로 작동한다고 생각합니다. 그렇다면 단위 테스트를 작성 / 추가해야하는 이유는 무엇입니까? 어쨌든 통합 테스트를 작성해야하므로 통합 테스트에서 다루지 않는 부분에 대해서만 단위 테스트를 작성하려고합니다.
통합 테스트에 대한 단위 테스트의 이점은
- 작고 빠른 실행 (그러나 무언가를 테스트하기 위해 새 유닛을 추가하는 것은 이미 통합 테스트를 통해 테스트되었으므로 전체 테스트 슈트의 실행이 점점 길어짐
- 한 가지만 테스트하기 때문에 버그를 쉽게 찾을 수 있습니다 (그러나 통합 테스트가 실패했을 때 각 개별 부분을 확인하기 위해 쓰기 단위 테스트를 시작할 수 있습니다)
- 통합 테스트에서 발견되지 않은 버그를 찾으십시오. 예를 들어 마스킹 / 오프셋 버그. (그러나 내 통합 테스트가 모두 통과되면 숨겨진 프로그램이 존재하더라도 프로그램이 작동한다는 의미입니다. 따라서 향후 통합 테스트를 중단하거나 성능 문제를 일으키지 않는 한 이러한 버그 찾기 / 수정은 우선 순위가 높지 않습니다)
그리고 우리는 항상 적은 코드를 작성하려고하지만, 단위 테스트를 작성하려면 더 많은 코드가 필요합니다 (주로 모의 객체 설정). 단위 테스트와 통합 테스트의 차이점은 단위 테스트에서 모의 객체를 사용하고 통합 테스트에서 실제 객체를 사용한다는 것입니다. 중복이 많고 테스트에서도 코드 동작을 변경하기 위해 오버 헤드가 추가되기 때문에 중복 코드가 마음에 들지 않습니다 (리 팩터 도구가 항상 작동하는 것은 아닙니다).