二週間ほど前の発表になるが、WordPress コアのユニットテストで利用しているPHPUnitのバージョンが9.x系にアップグレードされ、ユニットテストを新しくする試みがおこなわれている。これまではPHPUnit7系と8系でエラーを吐いていたのだが、これらの問題は解消されたようだ。 さて、コアの方は改善してめでたしめでたしなのだが、これまでのWordPressテーマ・プラグイン開発の定石として「コアの提供するユニットテストを利用する」という手法がとられていた。多くは WP-CLI の scaffold コマンドで生成される bin/install-wp-tests.sh を利用する。これはWordPressとコアのユニットテストフレームワークをダウンロードして結合テストの状態で始められる便利コマンドなので、GitHub ActionsのようなCI/CDのDockerコンテナ上で環境を揃え
Laravel Advent Calendar 2021 17日目の記事です。 僕自身が書いた経験のある範囲でPHPUnitでテストコードを書くときのTipsやサンプルコードをまとめます。 はじめに いきなりタイトルには直接関係ない小ネタを挟みます。 テスト関連のコマンド テストファイル作成 # tests/Featureに作成される php artisan meke:test SampleTest # tests/Unitに作成される php artisan make:test SampleTest --unit # ディレクトリを指定してファイル作成 # tests/Feature/User配下 php artisan make:test User/SampleTest # tests/Unit/User配下 php artisan make:test User/SampleTest
最近になってPHPUnitをちゃんと使ってユニットテストを書くようになってきたのですが、まだまだTipsが足りないと感じます。個人的に実践している書き方をいくつか並べてみます。 追記:最初、シェバングと書いていましたが、オプションを渡せる数が決まっていたりOSによっては動かなかったりとあまり便利でないことがわかりました。。phpunit.xmlを書いた方がいいかも。 ちょっとしたテスト → シェルスクリプト化する PHPUnitは高機能なのですが、いかんせん最初の障壁が高いと思います。とにかく気軽に書きたいなら、シェルスクリプトを作って単独ファイルで実行できるようにするといいです。 #!/bin/sh phpunit --colors *Test.php # ↑オプションを書き並べておく <?php class SampleTest extends PHPUnit_Framework_Te
Sebastian Bergmann has created the industry-leading testing tool PHPUnit, which has played a vital role in professionalizing software development with PHP. Sebastian shares his comprehensive experience in publications and at conferences. As Co-Founder and Principal Consultant of The PHP Consulting Company (thePHP.cc), he helps his clients to develop software successfully. In his free time, Sebasti
「はじめに」の「はじめに」 2016年版としてマイグレーションしました。 特にこだわりが無い場合は、こちらを参照してください。 はじめに こんな感じで資料を作ろうとしていた草稿です。 文中のソースコードの正誤とかは見きれていません。 ツッコミとか有れば、よろしくお願いしますm( _ _ )m PHPUnitを使ったからといって、どんなソースコードもテストできる訳ではありません。 テストをし易いようにクラスを設計している必要があります。また、そのように設計していてもUnitテストに入れることの出来ない箇所は出てきます。Unitテストに入れることの出来ない箇所は出来ないと割り切らなければなりません。むしろ、どれだけのコードをUnitテストに入れることが出来るか? というのが設計者の腕の見せどころになるでしょう。 極論を言うと 「どんなクラスでも疎結合に実装していなければならない」 ということで
ちまたで人気の Composer を試してみた。 http://getcomposer.org/ だが、pear 経由では PHPUnit がインストールに失敗する。もしかしたら Composer の不具合かもしれないが、どうやら PHPUnit のpear の管理情報 (packages.json) に問題(?)があるらしい。 https://gist.github.com/2433139 を参考にして、インストールしてみた。 composer.json: リポジトリをローカル指定し、url の先に PHPUnit 用の packages.json を配置する。 { "repositories" : [ { "type" : "composer", "url" : "file:///path/to/repositories/phpunit" } ], "require" : { "pea
というわけで @mon_sat です! PHPUnitについてのセッションということで気合い充分で参加してきました。 この8時間耐久シリーズはノマドのなかのノマドであり、安藤の中の安藤である@yandoさんが、無償で行っているセミナー(?)です。 コワーキングスペースのなかのコワーキングスペースである下北沢オープンソースカフェにて、午前中から夕方まで、みっちりPHPUnitについて学んできました。 PHPUnit使ってますか? 普段テストを書いていないとは言えませんが、胸を張って言えるレベルではないわたし。 独習でやってきていると基礎体力の点で充分とは言えないもの。今回はみっちりと筋トレしてこようと思い参加した次第。 8時間耐久PHPUnitの教室 View more presentations from yandod 午前中はPHPUnitのインストールが中心。 しかしそこはサービス精神
以前書いた記事、「VimからPHPUnitを実行する環境を整える」では、Vimのquickrunを使用してPHPUnitを非同期で実行し、結果にグリーン、レッドの色をつける方法を紹介しました。 コマンドラインからPHPUnitを実行していた頃に比べ、ずいぶん開発効率はよくなりましたが、いくつか不満に思っていたことがあります。 テストの成功・失敗の結果を、Vimの下のほうにシンプルに表示したいテストが失敗したときは、どの行で失敗したかすぐに分かるようにしたい これらを解決するために、 quickrunのoutputterを書いてみました。 このoutputterを導入すると、PHPUnitの実行結果(OK,FAILURE)をコマンドラインに色付きで出力し、ロケーションリストからテストの失敗行にジャンプできるようになります。 動作確認環境 Vim 7.3quickrun 0.5.1PHPUni
みなさんこんにちは。@ryuzeeです。 SlideShareを徘徊していたらPHPUnitのアンチパターン・ベストプラクティスに関する素晴らしいスライドを見つけたので内容を抜粋で紹介します。 1. テストの中で何もテストしていない class FooTest extends PHPUnit_Framework_TestCase { public function testSomething() { $foo = new Foo; $foo->doSomething(new Bar); } } こういうテスト。どこにもアサーションがなくて何もチェックしていません。 $foo->doSomethingの戻り値を検証しないならなんの意味もありません。 純粋にTDDをしていれば、テストコード作成→テスト実行でRed→プロダクションコード作成→テスト実行でGreenなのでこういうテストは登場しませ
PHPUnitのテストケースで書き換えた値の復帰について。 テストケースでテストを記述する際に、スーパーグローバルやクラス変数を書き換えることがあるのですが、これらの値を書き換えたまま、別のテストを実行すると書き換えられた状態でテストが実行されるので、それらの値に依存した処理があるとテストが通らないことがあります。 PHPUnitでは、そういったテストをまたがって影響を及ぼすであろう値の保存、復帰を自動で行なってくれる機能があります。 スーパーグローバル デフォルトでは、各テストメソッドを実行する前に、スーパーグローバル変数($_ENV, $_POST, $_GET, $_COOKIE, $_SERVER, $_FILES, $_REQUEST)の値をが保存されており、テストメソッド終了後にそれらの値がスーパーグローバル変数へ復帰されます。 これらの処理はsetUp()/tearDown(
Symfony2を勉強するにあたり、Symfony2のテストコードをVimのquickrunから実行する方法について調べました。 動作確認環境 Vim7.3quickrun0.5.1PHP5.3.9PHPUnit3.6.7Symfony2.0.8 目次 .vimrc .vimrc 下記のようにquickrunを設定することで動作しました。 Symfony2のphpunit.xml.distは ~/Sites/Symfony2/app/phpunit.xml.dist にあるものとします。 以下、.vimrcです。 augroup QuickRunPHPUnit autocmd! autocmd BufWinEnter,BufNewFile *Test.php set filetype=php.phpunit augroup END let g:quickrun_config['php.ph
The document defines a fib function that recursively calculates Fibonacci numbers and prints the 10th Fibonacci number. It then defines some unit tests for a Calculator class that test the add method by asserting the expected result. Finally, it defines some unit tests for a User class that test validating a user object.Read less
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く