Category Archives: PHPUnit

PHPのDBテストに役立つツール: Phactory

このエントリーをはてなブックマークに追加
はてなブックマーク - PHPのDBテストに役立つツール: Phactory
Share on Facebook

Phactory

Phactory – A Database Factory for PHP Unit Tests

RoRにヒントを得たPHPのDBテストツールです。DBに簡単にテストデータの出し入れができるので、DB関連のテスト時に威力を発揮します。

  • O/Rマッパーを利用してオブジェクト指向的にDBとのデータ交換が可能
  • テストデータをテストコードに埋め込めることができる
  • ブループリント(blueprints)により、ダミーデータや連番のテストデータが簡単に作成できる

PHPUnit拡張のDBTestは、別ファイルでフィクスチャを用意しなければならなかったり、おまじないコードが長すぎて手動では絶対に書けないものだったりし、非常に使い勝手が悪いです。Phactoryはこうした不満の解消に役立ちそうです。

まだバージョンは 0.1.0 ということですが、これからの発展が期待されます。

データベーステストのオペレーション

このエントリーをはてなブックマークに追加
はてなブックマーク - データベーステストのオペレーション
Share on Facebook

PHPUnitを使ってDBと連携したテストする際には、PHPUnitのDatabaseTestという拡張を使います。この場合よくあるケースとして、setUp()でテーブルにフィクスチャを入れ、tearDown() でDBを掃除したいことがあります。

そうした処理には、オペレーションと呼ばれるメソッドを使うと便利です。下記にその一覧を書いておきます。

メソッドの詳細は、「\PEAR\PHPUnit\Extensions\Database\Operation\Factory.php」に書いてあります。

オペレーション やる内容
NONE() 何もしない
CLEAN_INSERT() TRUNCATE→INSERT
INSERT() データセットを挿入する
TRUNCATE() Executes a truncate against all tables in a dataset.
DELETE() Deletes the rows in a given dataset using primary key columns.
DELETE_ALL() Deletes all rows from all tables in a dataset.
UPDATE() Updates the rows in a given dataset using primary key columns.

参考

Chapter 9. Database Testing

PHPUnitで文字コード関連のWarningが出るとき

このエントリーをはてなブックマークに追加
はてなブックマーク - PHPUnitで文字コード関連のWarningが出るとき
Share on Facebook

XAMPP環境でPHPUnitを使おうと思ったら以下のような警告が出ました。(テスト自体は実行できます)

PHPUnit 3.4.15 by Sebastian Bergmann.


Warning: DOMElement::setAttribute(): string is not in UTF-8 in C:\xampp\php\PEAR\PHPUnit\Util\Log\JUnit.php on line 307

Warning: DOMElement::setAttribute(): string is not in UTF-8 in C:\xampp\php\PEAR\PHPUnit\Util\Log\JUnit.php on line 421
I
Warning: DOMDocument::saveXML(): output conversion failed due to conv error, bytes 0x82 0xC4 0x82 0xB7 in C:\xampp\php\PEAR\PHPUnit\Util\Log\JUnit.php on line 474


Time: 1 second, Memory: 5.25Mb

OK, but incomplete or skipped tests!
Tests: 1, Assertions: 0, Incomplete: 1.

いろいろ調べた結果、ソースディレクトリに日本語が使われているのが問題でした。このケースでは「c:\temp\てすと」なんてディレクトリに入れていました。

開発のとき日本語ディレクトリを使うのはやめましょう。