우리가 깨닫든 모르든, 우리는 웹 애플리케이션을 개발할 때 항상 테스트를 합니다. PHP로 클래스를 작성할 때 HTML 양식으로 웹 페이지를 만들 때 복잡한 집합을 구현할 때 특정 메서드를 올바르게 구현했는지 여부를 표시하기 위해 echo
또는 die
문을 사용할 수 있습니다. 페이지가 예상대로 상호 작용하는지 확인하기 위해 일부 테스트 데이터를 입력하려고 할 수 있습니다. 고급 개발자는 이 테스트 프로세스를 자동으로 완료하기 위해 몇 가지 코드를 작성하므로 무언가를 테스트해야 할 때마다 코드를 호출하고 코드를 그대로두면 됩니다. 이를 자동 테스트라고 하며 이 장의 주요 주제입니다.
Yii에서 제공하는 테스트 지원에는 단위 테스트 및 가 포함됩니다. 기능 테스트.
단위 테스트는 독립적인 코드 단위가 예상대로 작동하는지 확인합니다. 객체지향 프로그래밍에서 가장 기본적인 코드 단위는 클래스입니다. 이 클래스에서 구현한 각 메서드가 정상적으로 작동하는지 확인하기 위해 단위 테스트는 일반적으로 이 클래스를 개발한 사람이 작성합니다.
기능 테스트에서는 기능이 예상대로 작동하는지 확인합니다(예: 블로그 시스템의 커밋 작업) ). 기능 테스트는 일반적으로 테스트할 기능에 여러 클래스가 포함되기 때문에 더 고급입니다. 기능 테스트는 일반적으로 시스템 요구 사항을 잘 아는 사람이 작성합니다(이 사람은 개발자일 수 있습니다. 엔지니어).
다음은 테스트 중심 개발(TDD) 개발 주기를 보여줍니다.
만들기 구현될 기능을 다루는 새로운 테스트 기능이 아직 구현되지 않았기 때문에 첫 번째 실행에서 실패할 것으로 예상됩니다.
이 새로운 기능을 보장하기 위해 모든 테스트를 실행하십시오. 테스트가 실패합니다.
테스트를 통과하는 코드를 작성하세요.
모든 테스트를 실행하고 모든 테스트가 통과하는지 확인하세요.
새로 작성된 코드를 리팩터링하고 해당 테스트가 여전히 통과하는지 확인하세요.
전체 기능 구현을 촉진하려면 1~5단계를 반복하세요.
Yii에서 제공하는 테스트 지원에는 PHPUnit 3.5 이상 및 Selenium Remote Control 1.0 이상이 필요합니다. (Linux에 PHPUnit을 설치하려면 Ubuntu에 PHPUnit을 설치하기 위한 자세한 단계 및 오류 해결 문서를 참조하십시오. Windows에 PHPUnit을 설치하려면 Windows에 Pear 및 PHPUnit 설치에 대한 자세한 튜토리얼을 참조하십시오. Selenium 다운로드 주소는 다음과 같습니다. 여기: 다운로드를 클릭하세요.
yiic webapp
콘솔 명령을 사용하여 새로운 Yii 애플리케이션을 생성하면
testdrive/ protected/ 包含了受保护的应用文件 tests/ 包含了应用测试 fixtures/ 包含了数据 fixtures functional/ 包含了功能测试 unit/ 包含了单元测试 report/ 包含了 coverage 报告 bootstrap.php 这个脚本在一开始执行 phpunit.xml PHPUnit 配置文件 WebTestCase.php 基于 Web 的功能测试基类
테스트를 작성하고 완료할 수 있는 다음 파일과 디렉터리가 생성됩니다. 위와 같이 우리의 테스트 코드는 주로 fixtures
, functional
, unit
세 디렉터리에 위치하며, report
디렉터리는 생성된 코드 커버리지 보고서를 저장하는 데 사용됩니다. 콘솔 창에서 다음 명령을 실행하여 테스트(단위 테스트이든 기능 테스트이든)를 실행합니다.
% cd testdrive/protected/tests % phpunit functional/PostTest.php // 执行单个测试 % phpunit --verbose functional // 执行 'functional' 下的所有测试 % phpunit --coverage-html ./report unit
위의 마지막 명령은
디렉터리의 모든 테스트를 실행한 다음 생성됩니다. 코드 적용 보고서를 생성하려면 PHP의 xdebug 확장을 설치하고 활성화해야 합니다.unit
3. 테스트 부팅 스크립트report
bootstrap.php
$yiit='path/to/yii/framework/yiit.php'; $config=dirname(__FILE__).'/../config/test.php'; require_once($yiit); require_once(dirname(__FILE__).'/WebTestCase.php'); Yii::createWebApplication($config);
파일을 포함하여 일부를 초기화합니다. 전역 상수와 필요한 테스트 기본 클래스. 그런 다음
이 구성 파일을 사용하여 애플리케이션 인스턴스를 만듭니다. 파일을 보면 yiit.php
구성 파일에서 상속된다는 점을 알 수 있습니다. CDbFixtureManager라는 추가 test.php
응용 프로그램 구성 요소를 추가합니다. 다음 섹션에서 Fixture에 대해 자세히 소개합니다. 이 경우 테스트 실행이 정상적인 개발 또는 생산 활동을 방해하지 않도록 테스트용 전용 데이터베이스가 제공되어야 합니다. 위의 test.php
구성 주석을 제거한 다음 main.php
속성을 입력하여 데이터베이스에 연결해야 합니다. DSN(데이터 소스 이름)이면 충분합니다.fixture
테스트 시리즈 튜토리얼:
Yii 프레임워크 공식 가이드 시리즈 38 - 특정 상태 정의(픽스처)
Yii 프레임워크 공식 가이드 시리즈 39——유닛 테스트
Yii 프레임워크 공식 가이드 시리즈 40——테스트: 기능 테스트db
위 내용은 Yii Framework 공식 가이드 시리즈 부록 37 - 테스트: 개요입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!