>  기사  >  백엔드 개발  >  Yii 프레임워크 공식 가이드 시리즈 보충 자료 37 - 테스트: 개요

Yii 프레임워크 공식 가이드 시리즈 보충 자료 37 - 테스트: 개요

黄舟
黄舟원래의
2017-02-15 09:42:481072검색



우리가 깨닫든 모르든, 우리는 웹 애플리케이션을 개발할 때 항상 테스트를 합니다. PHP로 클래스를 작성할 때 HTML 양식으로 웹 페이지를 만들 때 복잡한 집합을 구현할 때 특정 메서드를 올바르게 구현했는지 여부를 표시하기 위해 echo 또는 die 문을 사용할 수 있습니다. 페이지가 예상대로 상호 작용하는지 확인하기 위해 일부 테스트 데이터를 입력하려고 할 수 있습니다. 고급 개발자는 이 테스트 프로세스를 자동으로 완료하기 위해 몇 가지 코드를 작성하므로 무언가를 테스트해야 할 때마다 코드를 호출하고 코드를 그대로두면 됩니다. 이를 자동 테스트라고 하며 이 장의 주요 주제입니다.

Yii에서 제공하는 테스트 지원에는 단위 테스트가 포함됩니다. 기능 테스트.

단위 테스트는 독립적인 코드 단위가 예상대로 작동하는지 확인합니다. 객체지향 프로그래밍에서 가장 기본적인 코드 단위는 클래스입니다. 이 클래스에서 구현한 각 메서드가 정상적으로 작동하는지 확인하기 위해 단위 테스트는 일반적으로 이 클래스를 개발한 사람이 작성합니다.

기능 테스트에서는 기능이 예상대로 작동하는지 확인합니다(예: 블로그 시스템의 커밋 작업) ). 기능 테스트는 일반적으로 테스트할 기능에 여러 클래스가 포함되기 때문에 더 고급입니다. 기능 테스트는 일반적으로 시스템 요구 사항을 잘 아는 사람이 작성합니다(이 사람은 개발자일 수 있습니다. 엔지니어).

1. 테스트 중심 개발

다음은 테스트 중심 개발(TDD) 개발 주기를 보여줍니다.

  1. 만들기 구현될 기능을 다루는 새로운 테스트 기능이 아직 구현되지 않았기 때문에 첫 번째 실행에서 실패할 것으로 예상됩니다.

  2. 이 새로운 기능을 보장하기 위해 모든 테스트를 실행하십시오. 테스트가 실패합니다.

  3. 테스트를 통과하는 코드를 작성하세요.

  4. 모든 테스트를 실행하고 모든 테스트가 통과하는지 확인하세요.

  5. 새로 작성된 코드를 리팩터링하고 해당 테스트가 여전히 통과하는지 확인하세요.

전체 기능 구현을 촉진하려면 1~5단계를 반복하세요.

2. 테스트 환경 구축

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 확장을 설치하고 활성화해야 합니다.

unit3. 테스트 부팅 스크립트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);

위에 표시된 것처럼 먼저 Yii 프레임워크의

파일을 포함하여 일부를 초기화합니다. 전역 상수와 필요한 테스트 기본 클래스. 그런 다음

이 구성 파일을 사용하여 애플리케이션 인스턴스를 만듭니다.

파일을 보면 yiit.php 구성 파일에서 상속된다는 점을 알 수 있습니다. CDbFixtureManager라는 추가 test.php 응용 프로그램 구성 요소를 추가합니다. 다음 섹션에서 Fixture에 대해 자세히 소개합니다. 이 경우 테스트 실행이 정상적인 개발 또는 생산 활동을 방해하지 않도록 테스트용 전용 데이터베이스가 제공되어야 합니다. 위의 test.php 구성 주석을 제거한 다음 main.php 속성을 ​​입력하여 데이터베이스에 연결해야 합니다. DSN(데이터 소스 이름)이면 충분합니다.fixture

이러한 시작 스크립트를 사용하는 경우 단위 테스트를 실행하면 서비스 요구 사항과 유사한 애플리케이션 인스턴스를 얻을 수 있으며, 주요 차이점은 테스트에 Fixture Manager와 전용 테스트 데이터베이스가 있다는 것입니다.


테스트 시리즈 튜토리얼:

Yii 프레임워크 공식 가이드 시리즈 38 - 특정 상태 정의(픽스처)

Yii 프레임워크 공식 가이드 시리즈 39——유닛 테스트

Yii 프레임워크 공식 가이드 시리즈 40——테스트: 기능 테스트db

위 내용은 Yii Framework 공식 가이드 시리즈 부록 37 - 테스트: 개요입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.