SimpleTestとは
CakePHP 1.2や1.3でSimpleTestを使っていたね
PHP 5.1.6とSmarty 2.xで動いているレガシーアプリケーションがあります。ユニットテストはありません。この動作環境を PHP 7.xにアップデートすることが目標です。
かなり古いようで、foreach文ではなく、reset、list、eachを使っていました。
for ( reset($keys); list($i, $key) = each($keys); ) {
Code language: PHP (php)
えいやっで PHP 7.1のDocker環境で動かしましたが、残念ながら一部の機能が動きません。
何がそんなに変わったの?と調べると、結構ありました。このアプリに影響しそうな項目をピックアップすると、
5.1 -> 5.2
- glob関数で "/xx/*/yy/*" で検索できなくなった。
- pathinfo関数の返り値に'filename'が追加された。
json_encode関数、json_decode関数が新規追加された。
5.2 -> 5.3
- realpath関数の動きがOS間で統一された。
- split関数が非推奨。
- ereg関数が非推奨。
- newの&参照が非推奨。
- namespaceの導入。
- クロージャの導入。
5.3 -> 5.4
- 配列の短縮構文が追加され、
array()
の代わりに[]
を使えるようになった。 - htmlspecialchars、htmlentitiesでcharset指定を推奨。
5.4 -> 5.5
- mcrypt関数が非推奨。
7.1 -> 7.2
- each関数が非推奨。
7.3 -> 7.4
- get_magic_quotes_gpc関数が非推奨。
- is_real関数が非推奨。
まず、PHP 5.1.6の状態で、E2EテストをSelenium IDEで作りました。
次に、最小限のユニットテストをSimpleTestで作ることにしました。
PHPのxUnitの主流は、phpunitよ。phpunitを使える環境なら、phpunitを使ってね。
ちなみに、
Smarty 3.x は、PHP 5.2+
composerは、PHP 5.3+
phpunit 4.8が、PHP 5.3.3+
です。
PhpStormのSettings>PHP Language Levelは、5.1や5.2はなく、5.3からです。
バージョン対応表
今回は、1.1.0のtar.gzをダウンロードして、使いました。
SimpleTestは、composerにも対応していました。1.1.3〜v1.2.0といくつかのバージョンがあります。
SimpleTestとPHPの対応バージョンは、次のとおりです。
SimpleTest | PHP | インストール |
---|---|---|
1.0.1 | 4.2.0+ | tar.gz |
1.1.0 | 5.0.5+ | tar.gz |
1.1.3 | 5.0.5+ | composer |
1.1.4 | 5.0.5+ | composer |
v1.1.5 | 5.0.5+ | composer |
v1.1.6 | 5.0.5+ | composer |
v1.1.7 | 5.0.5+ | composer |
v1.2.0 | 7.1+ | composer |
はじめてcomposerでsimpletestをインストールする場合
v1.1.7 または v1.2.0
composer以前のsimpletest 1.1.0用のテストケースがある場合
v1.1.3 で試してください。
v1.1.7 へ進むにつれて、クラスのコンストラクタが __construct() に置き換わっています。
作ったテストケースのコンストラクタを __construct()に置き換えれば、v1.1.7でも動くと思います。