Symfoware

Symfowareについての考察blog

CodeIgniter 3 ユニットテストをコマンドで実行する

CodeIgniterでテストを実行する方法を調べました。
ユニットテストクラス(Library Reference - Unit Testing Class)

ブラウザから実行しないと結果がわからないのは、
自動化するとき困るなと思ったので、コンソールで
実行する良い方法を考えてみます。



テスト結果を配列で受け取る



result()を実行し、結果を文字列ではなく配列で受け取ります。
テストがOKのものはスルー。
NGだったものだけ抽出して表示します。


  1. <?php
  2. class Test extends CI_Controller {
  3.     
  4.     function __construct() {
  5.         parent::__construct();
  6.         
  7.         // unit_testライブラリのロード
  8.         $this->load->library('unit_test');
  9.     }
  10.     
  11.     public function index() {
  12.         // コンソールからの実行以外は処理しない
  13.         if (!is_cli()) {
  14.             return;
  15.         }
  16.         
  17.         // テストを実行
  18.         $this->unit->run(1, 1, 'first test');
  19.         $this->unit->run(1, 2, 'first test');
  20.         
  21.         // 結果を配列で受け取る
  22.         $results = $this->unit->result();
  23.         
  24.         // 内容をチェック
  25.         foreach($results as $result) {
  26.             // テストが通過している場合はそのまま
  27.             if ($result['Result'] == 'Passed') {
  28.                 continue;
  29.             }
  30.             
  31.             // 失敗しているときは詳細を表示
  32.             echo $result['Test Name'] . PHP_EOL;
  33.             echo $result['Test Datatype'] . PHP_EOL;
  34.             echo $result['Expected Datatype'] . PHP_EOL;
  35.             echo $result['Result'] . PHP_EOL;
  36.             echo $result['File Name'] . PHP_EOL;
  37.             echo $result['Line Number'] . PHP_EOL;
  38.             echo $result['Notes'] . PHP_EOL;
  39.         }
  40.         
  41.     }
  42.     
  43. }





コマンドラインからの実行(General Topics - Running via the CLI)
こちらで調べたことが役に立ちます。
コマンドでテストを実行してみます。


# php5 index.php test
first test
Integer
Integer
Failed
/var/www/ci3/application/controllers/Test.php
20




ちゃんとエラーだけ表示できました。
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/02/16(月) 22:57:07|
  2. PHP
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<CodeIgniter 3でSQLite3を使用する(Debian 7 + php-fpm) | ホーム | CodeIgniter 3 ユニットテストクラス(Library Reference - Unit Testing Class)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1626-b31c84f0
この記事にトラックバックする(FC2ブログユーザー)