시험 운전 UI는 화면에서 볼 때까지 화면에서 원하는 것을 알지 못하기 때문에 문제가됩니다. 이러한 이유 때문에 GUI 개발은 반복적으로 반복되는 경향이있어 테스트를 통해 운전하기가 어렵습니다.
이것은 우리가 GUI 용 TDD를 포기한다는 것을 의미하지 않습니다. 오히려 GUI에서 가능한 많은 코드를 푸시하여 간단한 배선 코드 만 남겨 둡니다. 이러한 배선은 문제의 본질에 영향을 미치지 않으면 서 우리가 필요로하는 반복적 인 대규모 변경을 가능하게합니다.
이 기술은 수년 전에 Michael Feathers가 "The Humble Dialog Box"이라는 제목의 기사에서 가장 잘 묘사 한 것 같습니다. 그것은 또한 4 년 전에 그런 저주를 일으킨 Model-View-Presenter 패턴의 근본적인 아이디어입니다. 이제 Passive View 및 감독 컨트롤러 패턴으로 분리되었습니다. 이 질문의 기사 링크는 이러한 아이디어를 활용하지만 테스트 중심 방식이 아닌 테스트 방식을 사용합니다.
아이디어는보기를 제외한 모든 것을 테스트하는 것입니다. 사실, 우리는 오랫동안 좋은 견해를 쓸 필요조차 없습니다. 실제로보기는 너무 어리석게 간단해서 아마 단위 테스트를 전혀 필요로하지 않을 것입니다. 그렇지 않으면 사실 마지막으로 기록 될 수 있습니다.
감독관을 테스트하려면 화면에 데이터를 표시하는 방법을 이해하기 만하면됩니다. 데이터가 어디에 있는지, 글꼴이 무엇인지, 색상이 무엇인지, GUI의 방대한 반복을 유발하는 기타 외관상의 문제가 무엇인지 알 필요가 없습니다. 오히려 한 데이터 항목이 일종의 텍스트 필드라는 것을 알고 있습니다. 다른 하나는 메뉴 일 것이고, 또 다른 하나는 버튼이나 체크 박스가 될 것입니다. 그런 다음보기에서이 항목을 올바르게 렌더링하기 위해 묻는 데 필요한 모든 질문을 요청할 수 있는지 확인합니다.
예를 들어 텍스트 상자에 기본값이있을 수 있습니다. 보기는 그것을 요구할 수 있어야합니다. 메뉴에는 회색으로 표시된 항목이있을 수 있습니다. 보기는이 정보를 요청할 수 있어야합니다. 보기에서 묻는 질문은 모두 프레젠테이션에 관한 것이며 비즈니스 규칙이 없습니다.
동일한 토큰으로, 어떤 것이 바뀌면 감독관에게 알려줄 것입니다. 컨트롤러는 모든 유형의 유효성 검사 및 오류 복구를 포함하여 데이터를 적절히 수정 한 다음 뷰에서 데이터를 표시하는 방법을 묻습니다.
이 모든 것은 시각적 디스플레이와 분리되어 있기 때문에 테스트 구동이 가능합니다. 모두 에 관한 것이므로 데이터가 조작되고 표시되며 이 아닌 것은입니다. 따라서 대규모 반복 작업이 필요하지 않습니다.