2009-04-14 4 views
2

최근에 저는 우리 제품에서 Email2SMS 기능에 대한 작업을 시작했습니다. 프로젝트에 참여했을 때이 구성 요소는 단위 테스트로 코드 커버리지가 전혀 없었습니다. 레거시 코드.커맨드 라인 통합 테스트를위한 PHPUnit

내가 작업을 시작한 이래로 나는 테스트 우선 접근 방식을 사용하고있었습니다. 그러나 코드 품질은 매우 낮습니다. 단위 테스트를 통해 분할하고 작은 덩어리를 테스트하는 것은 매우 어려웠으므로 통합 테스트를 작성하기로했습니다.

일부 메시지 정보를 받아들이고, DB에서 사용자를 검색하고, 모든 것이 정상이면 일부 정보를 저장하는 PHP 스크립트가 있습니다.

$last_line = system('php emailtosms.php -file=unicode_message.txt ', $retval); 

$this->assertStringExistsInLogFile('Email to SMS message was not sent'); 

나쁘지 않습니까? 이 문제를 어떻게 풀려고합니까?

답변

3

좋지 않습니다.

emailtosms.php 스크립트를 명령 줄 args를 처리하는 간단한 래퍼로 사용하여 테스트 한 다음 테스트 가능한 클래스로 전달하십시오. 마지막 단계에 따라 최종 테스트를 제외한 거의 모든 작업을 수행하기 위해 단위 테스트를 작성할 수 있습니다. 실제로 테스트 결과를 보내는 최종 단계를 조롱하고 변수에 저장 한 다음 거기에 유효한 것이 있는지 확인하십시오.

최종 통합은 종단 간 전체 클래스를 실행하고 최종 로그 또는 조금 높은 수준의 로그에 기록 할 내용을 확인하여 출력을 확인합니다.

관련 문제