[CodeIgniter2.x]CIUnitをCI2.0.2へ対応させるために行ったこと


rafsoaken / CIUnit / overview – Bitbucket

CIUnit本家の更新が3ヶ月ほど行われておらず、CodeIgniter 2.0.2への対応がされていなかったので、対応版として下記にアップしました。

fukata/CIUnit-for-CI2 – GitHub

まだ、完全に対応しきれているのか不明点はありますが、fixtureのロードやcontrollerやmodelのインスタンスは正常に取得できており、サンプルのテストコードは動作しています。

今回は、2.0.2へ対応した際に行ったこと(修正箇所)を書いておきます。

広告

ディレクトリ構成の変更

本家のリポジトリをcloneして中身を確認したところ、applicationとtestsが同じディレクトリに存在していましたが、testsはapplication毎に書くだろうと思い、applicationの直下に移動しました。通常applicationは1つしかありませんが、場合によっては複数のapplicationからsystemを共有するような構成を取る場合もあると思ったからです。

ただ、これはCIUnitの動作に関係なく、私個人の好みが強く含まれているので、もしapplicationと同じディレクトリにtestsを置きたい場合はtestsディレクトリへのパスやphpunit.xml内に記載されているbootstrap_phpunit.phpへのパス等を修正してください。

CIUnit_Versionへの統一

本家のコードを見た時にCIUnitとCIUnit_Versionという二つの定数が定義されており、どちらも同じような意味で利用されていたので、CIUnit_Versionに全て統一しました。phpunit.xml内に定義されたCIUnitの値を見ても0.17とバージョンと思われる値だったのと、CIUnitはクラス名として定義されていたので紛らわしいと思い、CIUnit_Versionに統一しました。

phpunit.xmlの使用に限らずテスト実行

CIUnit定数がphpunit.xml内で定義されている為、本家のコードだとphpunit.xmlを使用して実行された場合にしか正しくテストが実行されませんでしが、phpunit.xmlの使用に関係なくテストが実行されるように変更しました。

コレは意図的にこのような実装を行っていたのかそれとも単なるバグなのか、実はよく分かっていません。テスト用のbootstrap経由で画面表示の確認(テスト用DBだけを使用等)などを行っていたという方居ればこの修正は、以前のものに変更したいと思います。

絶対パスの使用

third_party/CIUnit/bootstrap_phpunit.php内に相対パスで定義された場所があったので、dirname(__FILE__)を使用する形に変更しました。相対パスだと実行場所が限られてしまう可能性があるためです。

その他いくつかバグ修正

その他、戻り値が参照渡しになっていなかったり、変数名が間違っていた箇所を修正しています。

まとめ

  • 本家コードの大部分が動いたので良かった
  • PHPUnit最高
  • 早く本家のメンテナンスが再開されて欲しい

関連記事