사용자 도구

사이트 도구


wordpress:unit_testing

문서의 이전 판입니다!


워드프레스 플러그인 유닛 테스팅

설치 과정

PHPUnit

Ubuntu 패키지로 PHP를 설치하면 PhpUnit 또한 패키지 매니저로 설치하는 것이 편리하다. 참고로 아래 코드는 vagrantwrapper provision 스크립트에 포함되었다.

참고로 아래 WP-CLI에서 요구하는 PHPUnit은 4.8.X 버전을 요구하므로(출처?) 패키지 매니저를 통해 PHPUnit을 설치하는 것은 이 문서를 작성하는 2016년 1월 현재에는 적당하지 않다. 아래 스크립트처럼 직접 PHPUnit 을 받는 것이 적절하다.

wget https://phar.phpunit.de/phpunit-old.phar -O /usr/local/bin/phpunit
chmod +x /usr/local/bin/phpunit

WP-CLI

WP CLI는 앞으로 익혀 두는 것도 좋을 것 같다. 마찬가지로 아래 스크립트 또한 vagrantwrapper에 포함시켰다.

wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -O /usr/local/bin/wp
chmod +x /usr/local/bin/wp

위 과정을 거치면 필요한 패키지는 설치가 완료된다.

다음 내가 평소 사용하는 워드프레스 환경에 맞춰서 WP-CLI가 동작을 하게 하려면 약간의 커스터마이징이 필요하다. 다음 포인트를 꼭 맞추고, WP-CLI config 문서를 참고하도록 한다.

  • CLI에서는 wp-config.php 에서 $_SERVER, $_SERVER['SERVER_NAME'] 항목은 사용할 수 없으므로 이 변수가 없을 경우를 대비한다.
  • 항상 wp-config.php 파일 내부에서 ABSPATH를 define 한다. 정확한 워드프레스 코어 파일을 지정하라.
  • require_once(ABSPATH . 'wp-settings.php'); 구문은 반드시 wp-config.php 에 위치시킨다. WP-CLI는 wp-config.php 파일 내부에서 이 라인을 직접 읽어 처리한다. 이 구문을 찾지 못하면 WP-CLI는 에러를 출력한다. https://github.com/wp-cli/wp-cli/wiki/FAQ 링크의 'PHP Fatal error: Cannot redeclare wp_unregister_GLOBALS()' 부분을 참고.

아래는 ~/.wp-cli/config.yml 의 예제이다.

path: /home/vagrant/shared/php/wordpress/wp-core
url: http://wordpress.vagrant:8080
user: changwoo
disabled_commands:
  - db drop

아래는 wp-config.php 의 예제이다.

<?php
 
if( !isset( $_SERVER ) || !isset( $_SERVER['SERVER_NAME'] ) ) {
	require( __DIR__ . "/wp-settings/wordpress.vagrant-config.php" );
} else {
	$domain = $_SERVER['SERVER_NAME'];
	require( __DIR__ . "/wp-settings/{$domain}-config.php" );
}
 
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
	define('ABSPATH', dirname(__FILE__) . '/wp-core/');
 
/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

기타

나중에 실행될 install-wp-tests.sh는 SVN, cURL을 요구한다.

sudo apt-get install subversion curl

테스트 환경 만들기

WP-CLI를 이용하면 매우 간결하게 테스트 환경을 구비할 수 있다. 아래 명령을 통해 플러그인의 테스트 환경을 시작할 수 있다.

wp scaffold plugin-tests <plugin-name>

플러그인 디렉토리에 가 보면 다음과 같은 디렉토리가 부가적으로 생성된 것을 확인할 수 있다.

  • bin/
    • install-wp-test.sh
  • tests/
    • bootstrap.php
    • test-sample.php
  • phpunit.xml
  • .travis.yml

테스트 환경을 만드는 쉘 스크립트가 bin/install-wp-test.sh로 만들어진 것을 확인할 수 있다. 이 스크립트는 워드프레스 개발 버전 관리 시스템 서버, SVN에서 testing 관련된 소스들을 가져 온다. 예전에는 이것을 수동으로 해 줬었는데 WP-CLI가 지원을 하는 것으로 보인다.

테스트를 위한 DB를 세팅, 설정하는 과정이 필요하다. 다음 명령으로 실행한다.

./install-wp-tests.sh <db-name> <db-user> <db-pass> [db-host] [wp-version]

이 스크립트는 새로운 DB를 생성하기 때문에, db-name은 기존에 사용 중인 데이터베이스를 쓰면 안 된다. 그리고 DB를 생성해야 하므로 db-user, db-pass 항목은 DB를 생성할 권한이 있는 사용자여야 하는 점을 주의한다.

테스트는 다음 명령으로 실행 가능하다.



참고 자료

wordpress/unit_testing.1453911713.txt.gz · 마지막으로 수정됨: 2016/01/27 16:21 저자 changwoo

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki