예비 메모
나는 다른 종류의 테스트의 구별에 들어 가지 않을 것 입니다.이 사이트에 대해서는 이미 몇 가지 질문 이 있습니다.
나는 거기에 무엇이 있는지를 말할 것이다. " 이 응용 프로그램의 가장 작은 분리 가능한 단위 테스트"라는 의미의 단위 테스트
격리 문제
프로그램 에서 가장 작은 분리 가능한 단위 는 무엇입니까? 글쎄, 내가 보는 것처럼, (높은?)는 어떤 언어로 코딩하고 있는지에 달려 있습니다.
Micheal Feathers 는 솔기 의 개념에 대해 이야기 합니다 : [WEwLC, p31]
이음새는 해당 위치에서 편집하지 않고 프로그램의 동작을 변경할 수있는 장소입니다.
그리고 세부 사항에 들어 가지 않고 단위 테스트의 맥락에서 이음새가 "테스트"가 "단위"와 인터페이스 할 수있는 프로그램의 장소라는 것을 이해합니다.
예
단위 테스트 (특히 C ++에서)는 테스트중인 코드에서 주어진 문제에 대해 엄격하게 요구되는 이음새 를 추가해야합니다 .
예:
- 비가 상 구현으로 충분한 가상 인터페이스 추가
- 분할-일반화 (?)-테스트 추가를 용이하게하는 "작은"클래스.
- 단일 실행 가능 프로젝트를 "독립적 인"라이브러리로 분리하여 테스트를 위해 독립적으로 컴파일하는 것을 용이하게합니다.
질문
나는 같은 요점에 대해 희망적으로 묻는 몇 가지 버전을 시도 할 것입니다.
- 단위 테스트가 단위 코드에 "유일한"응용 프로그램 코드를 구성하기 위해 하나를 요구하는 방식입니까 아니면 실제로 응용 프로그램 구조에 유리합니까?
- 단위 테스트를 수행하는 데 필요한 코드 일반화가 단위 테스트 이외 의 다른 용도에 유용 합니까?
- 단위 테스트를 추가하면 불필요하게 일반화해야합니까?
- 코드에서 모양 단위 테스트가 "항상"힘이 문제 영역에서 일반적으로 보이는 코드에도 좋은 모양입니까?
나는 코드를 사용하는 두 번째 장소가 필요할 때까지 / 일반화하지 않았다는 경험 법칙을 기억합니다. 단위 테스트 를 사용하면 항상 코드를 사용하는 두 번째 장소, 즉 단위 테스트가 있습니다. 이 이유는 일반화하기에 충분합니까?