사용자 도구

사이트 도구


wordpress:unit_testing

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
wordpress:unit_testing [2016/01/26 16:39] – 만듦 changwoowordpress:unit_testing [2016/01/28 14:37] (현재) changwoo
줄 6: 줄 6:
 참고로 아래 코드는 [[ https://github.com/chwnam/vagrantwrapper| vagrantwrapper]] provision 스크립트에 포함되었다. 참고로 아래 코드는 [[ https://github.com/chwnam/vagrantwrapper| vagrantwrapper]] provision 스크립트에 포함되었다.
  
-참고로 아래 WP-CLI에서 요구하는 PHPUnit은 4.8.X 버전을 요구하므로 패키지 매니저를 통해 PHPUnit을 설치하는 것은 이 문서를 작성하는 2016년 1월 현재에는 적당하지 않다. 아래 스크립트처럼 직접 PHPUnit 을 받는 것이 적절하다.+참고로 아래 WP-CLI에서 요구하는 PHPUnit은 4.8.X 버전을 요구하므로(출처?패키지 매니저를 통해 PHPUnit을 설치하는 것은 이 문서를 작성하는 2016년 1월 현재에는 적당하지 않다. 아래 스크립트처럼 직접 PHPUnit 을 받는 것이 적절하다.
  
 <code bash> <code bash>
줄 56: 줄 56:
 /** Sets up WordPress vars and included files. */ /** Sets up WordPress vars and included files. */
 require_once(ABSPATH . 'wp-settings.php'); require_once(ABSPATH . 'wp-settings.php');
 +</code>
 +
 +==== 기타 ====
 +나중에 실행될 ''install-wp-tests.sh''는 SVN, cURL을 요구한다.
 +<code bash>
 +sudo apt-get install subversion curl
 </code> </code>
  
줄 68: 줄 74:
 플러그인 디렉토리에 가 보면 다음과 같은 디렉토리가 부가적으로 생성된 것을 확인할 수 있다. 플러그인 디렉토리에 가 보면 다음과 같은 디렉토리가 부가적으로 생성된 것을 확인할 수 있다.
  
-* bin/ +  * bin/ 
-  * install-wp-test.sh +    * install-wp-test.sh 
-* tests/ +  * tests/ 
-  * bootstrap.php +    * bootstrap.php 
-  * test-sample.php +    * test-sample.php 
-* phpunit.xml +  * phpunit.xml 
-* .travis.yml+  * .travis.yml
  
-테스트는 다음 명령으로 실행 하다. +테스트 환경을 만드는 쉘 스크립트가 ''bin/install-wp-test.sh''로 만들어진 것을 확인할 수 있. 이 스크립트는 워드프레스 개발 버전 관리 시스템 서버, SVN에서 testing 관련된 소스들을 가져 온다. 예전에는 이것을 수동으로 해 줬었는데 WP-CLI가 지원을 는 것으로 보인다.
-<code>+
  
 +테스트를 위한 DB를 세팅, 설정하는 과정이 필요하다. 다음 명령으로 실행한다.
 +<code bash>
 +./install-wp-tests.sh <db-name> <db-user> <db-pass> [db-host] [wp-version]
 +</code>
 +이 스크립트는 새로운 DB를 생성하기 때문에, db-name은 기존에 사용 중인 데이터베이스를 쓰면 안 된다. 그리고 DB를 생성해야 하므로 db-user, db-pass 항목은 DB를 생성할 권한이 있는 사용자여야 하는 점을 주의한다.
 +
 +테스트는 플러그인 디렉토리에서 ''phpunit'' 명령으로 실행 가능하다. 이 때 플러그인의 메인 파일 이름은 ''tests/bootstrap.php''에서 수정 가능하다.
 +
 +<code php>
 +function _manually_load_plugin() {
 + require dirname( dirname( __FILE__ ) ) . '/pluginTestSample.php';
 +}
 +</code>
 +
 +
 +===== 워드프레스의 팩토리 =====
 +워드프레스 플러그인의 테스트는 ''WP_UnitTestCase'' 클래스를 확장하여 이뤄진다. 이 클래스는 팩토리 클래스를 제공한다. 이 팩토리 클래스를 이용하면, 워드프레스에서 관리하는 여러 오브젝트를 매우 편리하게 만들 수 있다.
 +
 +가령 포스트를 만드려면, 다음과 같이 코드를 작성한다.
 +<code php>
 +$post_id = $this->factory->post->create( array( 'post_title' => 'Test Post' );
 +</code>
 +
 +여러 레코드를 생성하는 것도 가능하다
 +<code php>
 +$post_ids = $this->factory->post->create_many( 10 );
 +</code>
 +
 +기본적으로 제공하는 팩토리는 다음과 같다.
 +<code php>
 +$this->post = new WP_UnitTest_Factory_For_Post( $this );
 +$this->attachment = new WP_UnitTest_Factory_For_Attachment( $this );
 +$this->comment = new WP_UnitTest_Factory_For_Comment( $this );
 +$this->user = new WP_UnitTest_Factory_For_User( $this );
 +$this->term = new WP_UnitTest_Factory_For_Term( $this );
 +$this->category = new WP_UnitTest_Factory_For_Term( $this, 'category' );
 +$this->tag = new WP_UnitTest_Factory_For_Term( $this, 'post_tag' );
 +if ( is_multisite() ) {
 + $this->blog = new WP_UnitTest_Factory_For_Blog( $this );
 + $this->network = new WP_UnitTest_Factory_For_Network( $this );
 +}
 </code> </code>
  
 ===== 참고 자료 ===== ===== 참고 자료 =====
-* [[https://pippinsplugins.com/unit-tests-wordpress-plugins-introduction/ | Unit Tests for WordPress Plugins - An Introduction]] +  * [[https://pippinsplugins.com/unit-tests-wordpress-plugins-introduction/ | Unit Tests for WordPress Plugins - An Introduction]] 
-* http://wp-cli.org/ +  * http://wp-cli.org/ 
-  * http://wp-cli.org/blog/plugin-unit-tests.html+    * http://wp-cli.org/blog/plugin-unit-tests.html
wordpress/unit_testing.1453826362.txt.gz · 마지막으로 수정됨: 2016/01/26 16:39 저자 changwoo

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki