CakePHP 2.2.2 本体のユニットテストを実行してみると結構失敗します

CakePHP のインストール

http://cakephp.jp/ から cakephp-cakephp-2.2.2-0-gf155687.zip をダウンロードしました。

http://localhost/cakephp-2.2.2/CakePHP にアクセスできるようにインストールします。

$ chmod -R o+w app/tmp/

app/Config/core.php の Security.salt と Security.cipherSeed を変更します。

/**
 * A random string used in security hashing methods.
 */
	Configure::write('Security.salt', 'Tfk9wjdmSDdije9wuwns726wjsbsdksis');

/**
 * A random numeric string (digits only) used to encrypt/decrypt strings.
 */
	Configure::write('Security.cipherSeed', '3928042948327218339429283922');

app/Config/database.php でデータベースの設定をします。

	public $default = array(
		'datasource' => 'Database/Mysql',
		'persistent' => false,
		'host' => 'localhost',
		'login' => 'root',
		'password' => '',
		'database' => 'cakephp222_devel',
		'prefix' => '',
		'encoding' => 'utf8',
	);

デバッグレベルを確認する

app/Config/core.phpCakePHP Debug Level が 2 になっていることを確認します。

	Configure::write('debug', 2);

テスト用データベースを設定する

app/Config/database.php でテスト用のデータベースの設定をします。

	public $test = array(
		'datasource' => 'Database/Mysql',
		'persistent' => false,
		'host' => 'localhost',
		'login' => 'root',
		'password' => '',
		'database' => 'cakephp222_test',
		'prefix' => '',
		'encoding' => 'utf8',
	);

テストを実行する

http://localhost/cakephp-2.2.2/test.php にアクセスするとブラウザからテストを実行できます。ただし、AllTests を選択したら、真っ白なページしか表示されませんでした。

ということで、コンソールから実行します。

$ cd app
$ rm -f tmp/cache/persistent/myapp_cake_core_*
$ rm -f tmp/cache/models/myapp_cake_model_*

すべてのテストの実行します。

$ Console/cake test core AllTests

すべてのテストを実行し、カバレッジレポートを作成します。メモリが 512MB では足りませんでしたので、増やしました。

$ Console/cake test core AllTests --coverage-html webroot/coverage

テスト結果

よくわかりませんが、かなり失敗します...

Tests: 3092, Assertions: 17638, Failures: 39, Errors: 11, Skipped: 131.

詳細は以下に記録しておきます。

テストカバー率

これも、CakePHP 本体のテストカバー率を正確に表しているのかどうか、わかりませんが、83% ほどでした。