戦えプログラマン

いつだって戦いなのだ

どこでもPHPUnit

何?
PHPユニットテストを試しに書いてみたいけど、導入方法がわからない?
そもそも導入に申請が要る?時間がない?外部プログラム利用禁止?

お兄さん良いものがありますよ。
よってらっしゃいみてらっしゃい。

どこでも誰でも人類皆等しく、今すぐ PHPUnit (のような何か)を書ける!
さあこれを適当な tekitou.php にコピペして、あなたも私も今から PHPUnitter !!!

ででーん

MicroPHPUnit.php

gist.github.com

厨二ネームですんません。
PHP 5.3~5.6で動作。それ以外は知りません。
特に工夫もなく見ればわかるレベルのコード量だが、

  • assertSame()
  • fail()

アサートはこれらしか実装してない。
まーこの2つさえあれば、エセPHPUnit書くには十分だろう。(慢心)
簡単な使い方については冒頭に記載。

PHPUnit互換(たぶん)なので、いつか本物のPHPUnitを使えるようになったら、
これに書いたテストコードを丸コピすりゃOK。

以上!

(※ この記事はここで終わりです。)


(※ 以下駄文)

どうしてこんな車輪の再発明をするに至ったか。
早くも暑さで狂ったのか。
いやいやこれには深い深い訳が・・・言うほどでもないがあったんだ。

・・・

(フィクションです。一昨日あった話とかではないです本当です。)
え?テストコードを書きたい?うん、いいよ。
え?パー?ピェー?コンポーザー?って何?
ふーん。じゃ、申請書書いて。
申請通るの2週間後くらいだけど、進捗大丈夫?
え?プロジェクトのコードに組み込むとか、お前本気で言ってる?
それで障害起きたら誰が責任取るの?
あのさー、こっちも忙しいから、仮定の話は暇な時にしてくれないかな。
おしゃべりしてないで手を動かそうよ。

・・・

ごくごく一般的なPHP案件での、上長との心温まる愉快な技術雑談の一例ですね。

  • UTを書く土壌がない。
  • そもそもUT Frameworkが導入されてない。
  • そもそも導入について調べる時間がない。
  • セキュリティ(笑)の問題で、お上からお申請書お判子お頂かないと、ソフトウェアを導入できない。(+牛歩

・・・

うるさいっ それでもテストコードを書きたいんだ!

・・・

そんなことを思って作った。
ので、ネットに放流した。

外部のデータ持込やソフトウェア導入が禁止でも、
ネットのコードのコピペはセーフみたいな風潮だからね。
元ネタが他人様のブログ自分のブログか程度の違いだし、晴れてどこでもPHPUnitれるね。
やったねペチパーちゃん!

・・・

「つーか元のプロジェクトからコード切り離したら、テストの意味なくね?」
逆に考えるんだ。
切り離しても正しく動くほど、疎結合なコードを書いてるのさ」と考えるんだ。

・・・

はーーーーーーーーーーーーー
もうPHPは嫌

※追記(2016/06/20)
テスト対象を「require_once」すれば、いちいちこのファイルにコピペ移植なんてしなくてもテストコード書けるじゃないか、と気付いた。
まぁそれで動くような疎結合なコード書いてるプロジェクトで、UnitTest一つまともに導入できない環境なんてないわな・・・