단위 테스트는 설계를 용이하게 할뿐만 아니라 주요 이점 중 하나입니다.
테스트 우선 작성은 모듈 성과 깨끗한 코드 구조를 이끌어냅니다.
코드를 테스트 우선 작성하면 주어진 코드 단위의 "조건"이 코드에서 가정 할 때 종속성 (일반적으로 모의 또는 스텁을 통해)으로 자연스럽게 전달됩니다.
"조건 x 부여, 행동 y 기대"는 종종 공급에 대한 스텁 x
( 현재 테스트에서 현재 구성 요소의 동작을 검증해야하는 시나리오 임) y
이되고 모의자가됩니다. 테스트의 종료 ( "반환해야한다"가 아닌 한 y
, 테스트는 리턴 값을 명시 적으로 검증합니다).
그런 다음이 장치가 지정된대로 동작 하면 발견 한 종속성 (for x
및 y
) 을 작성하는 단계로 넘어갑니다 .
이를 통해 깨끗하고 모듈화 된 코드를 작성하는 것은 매우 쉽고 자연스러운 과정입니다. 그렇지 않은 경우 종종 책임을 흐리게하고 행동을 함께 이해하기가 쉽지 않습니다.
나중에 테스트를 작성하면 코드가 제대로 구성되지 않은시기를 알 수 있습니다.
스텁이나 조롱 할 항목이 너무 많거나 너무 밀접하게 결합되어 코드 조각에 대한 테스트를 작성하는 것이 어려워지면 코드에서 개선해야 할 사항이 있다는 것을 알게됩니다.
단일 단위에 너무 많은 동작이 있기 때문에 "테스트 변경"이 부담이되는 경우 코드에서 개선해야한다는 것을 알 수 있습니다. .
더 추상화해야하기 때문에 시나리오가 너무 복잡해지면 ( "if x
and y
and z
......") 코드를 개선해야합니다.
중복과 중복으로 인해 두 개의 다른 조명기에서 동일한 테스트를 끝내면 코드를 개선해야합니다.
다음은 코드에서 테스트 가능성과 디자인 간의 밀접한 관계를 보여주는 Michael Feathers의 훌륭한 강연입니다 (원래 주석에 displayName으로 게시 됨). 또한 좋은 디자인과 테스트 가능성에 대한 일반적인 불만과 오해도 다루고 있습니다.