명확히. 어떤 사람들은 "테스트가 전혀없는 것보다 낫다"고 말합니다. 나쁘게 작성된 테스트는 개발 시간을 단축시키고, 처음에는 좋은 단위 테스트가 아니기 때문에 "손상된"테스트를 수정하는 데 며칠을 낭비하게됩니다. 지금 저에게있어, 테스트 대신 부담없이 테스트를 수행하기 위해 집중하고있는 두 가지 사항은 다음과 같습니다.
유지 보수성
당신은 결과를 (테스트해야 무슨 일이)가 아닌 방법 ( 어떻게 그런 일이). 테스트 설정은 가능한 한 구현에서 분리되어야합니다. 서비스 요청 등에 대한 결과 만 설정해야합니다.
- 테스트가 외부에 의존하지 않도록 조롱 프레임 워크를 사용하십시오.
- 가능한 경우 모의에 대한 스텁을 선호하십시오 (프레임 워크가 구별되는 경우).
- 테스트에 논리가 없습니다! If, 스위치, For-eaches, case, try-catch 등은 테스트 코드 자체에 버그를 유발할 수 있으므로 모두 큰 문제가되지 않습니다.
가독성
테스트에서 조금 더 반복하는 것이 좋습니다. 프로덕션 코드에서는 읽기 쉽도록 만들면 일반적으로 허용되지 않습니다. 위의 유지 관리 가능성과 균형을 맞추십시오. 시험이 무엇을하고 있는지 명시하십시오!
- 테스트를 위해 "정렬, 행동, 주장"스타일을 유지하십시오. 이를 통해 시나리오의 설정과 기대를 수행중인 조치 및 주장되는 결과와 분리합니다.
- 테스트 당 하나의 논리적 어설 션을 유지하십시오 (테스트 이름에 "및"이 있으면 여러 테스트로 나누어야 할 수 있습니다)
결론적으로, 당신은 "취약한"시험에 매우 관심을 가져야합니다. 시험은 시간 낭비로 끝날 수 있으며 가치가 없습니다.
당신은 말했다 :
단위 테스트에는 일반적으로 스터 빙 기능과 같은 다양한 "스 멜리 해킹"이 필요합니다.
Mocking 프레임 워크 사용과 같은 일부 단위 테스트 기술을 읽고 생활을 훨씬 쉽게 할 수있는 것처럼 들릴 수 있습니다. 위의 내용과 그 이상을 다루는 The Art of Unit Testing을 강력히 추천 합니다. 잘못 작성되고 유지하기 어려운 "취약한"테스트로 오랫동안 어려움을 겪고 나서 깨달음을 얻었습니다. 내가 올해 최고의 투자 중 하나입니다!