共通コンポーネントのテスト実装方法にあえてVRTを選択した話 / why do we choose VRT for testing shared components
動機 PHPUnit を使って static メソッドのテストがしたくて Mockery を調べていて、alias か overload プレフィックスを使えばいけそうってところまでは分かったんですが、両者の違いが、公式ドキュメントを読んでも違いがよく分からなかったので、調べてみました。 公式ドキュメント Quick Reference - Mockery Docs 参考ページ 「Mockery」を使ってサクッとPHPのテストを書いてみる Mockeryのクラス指定の考え方 結論 モッククラスのインスタンスを別でつくらないのであれば、alias でよさそう。 公式ドキュメントには Prefixing the valid name of a class (which is NOT currently loaded) with “overload:” will generate an alia
/** * @test */ public function 例外が発生することをテストする() { $this->expectException(ExceptionA::class); $classA = new ClassA(); $classA->method1ClassA(); } /** * @test * @expectedException ExceptionA */ public function 例外が発生することをテストする() { $classA = new ClassA(); $classA->method1ClassA(); } /** * @test */ public function 例外が発生しないことをテストする() { $classA = new ClassA(); try { $classA->method1ClassA(); } catch (Ex
初心者がテストコードを書くようになった経緯とオススメのテストフレームワーク 初めまして会社の隅っこで働いているvolと窓際で働いてるnagodonです。 今回は機会がありまして別のプロジェクトメンバー同士で技術ブログを書くことになりました。 テストコードを業務で使ったことがなかった二人が探りながらテストコードを書いたお話を、 前半をvol、後半をnagodonが行っていきたいと思います。 よろしくお願いします。 テストコードを書き始めた切っ掛け 私、volのプロジェクトでの切っ掛けは唐突でした。 ちょっと難しい機能を実装する事になり以下の内容で悩んでました。 1.時間足りない・・・ 2.仕様が複雑で設計大変 3.分担難しいけど一人じゃ間に合わない・・・ でもやらなくちゃいけないんだよ!! 時間が無いながらも大きな機能から小さい機能を切り出して 一個一個丁寧に設計 設計が出来上がった所、 手
自動テストするぞ!tmux + PHPUnit + watchmedoで構築する自動ユニットテスト環境 こんにちは、斉藤です。 前回はテスト駆動開発という開発方法をご紹介しました。 その中では”ユニットテストの実行”を主体に開発を行っていくことをお伝えしました。 今回は(余計な話も交えつつ)そのユニットテストの実行を自動化する方法をご紹介します。 * なぜ自動化? ユニットテストを手動で走らせていませんか? ユニットテストなど、開発プロセスの中で機械がやれることを手動で行うと、そこでスピード(and 効率)がガクッと下がります。機械任せにできるものは、以下のようなタスクがあります。 手動で行うことにしていると、そのプロセスを実行することを忘れてしまったり、「めんどくさいよー」ってなってしまい、実行回数が減ってしまいます。 その結果、品質の低いアプリが生まれますよね・・・。 近年では、それら
PHPでテストを書くというとPHPUnitがデファクトスタンダードで、次がSimpleTestでしょうか。 以前はインストールも大変でしたが、今となってはcomposer使えば楽ですし、実績もあります。 でも、本当にこの2択でPHPらしい開発ができていますか? たとえば、テストケースのクラスを用意することが前提になります。 ちょっとPHPのコードを書いてテストしたいときもです。 たとえば、以下のようなロジックを書きたいとします。 <?php $users = [ '太郎' => 'male', '花子' => 'female', '一郎' => 'male', ]; // この$usersから男性('male')のものだけを抽出したい $males = [ '太郎' => 'male', '一郎' => 'male', ]; ?> 普通にPHPUnitでTDDでとなると、それなりに面倒です
みなさんこんにちは。@ryuzeeです。 Behatは良さそうなので引き続き検証しています。 今回は、BehatとSeleniumを組み合わせて、受け入れテスト型のテストを自動化してみたので、その方法について説明しましょう。 なお、前回の記事を読まれていない場合はまずそちらを参照してください。 PHPでBDD(Behavior Driven Development)する方法 Seleniumの課題僕が関わっている案件では受入テストを自動化しているケースももちろんあって、その際はPHPUnitとSeleniumを組み合わせています。 このテストには以下のような課題があります。 画面の操作をするphpコードが大量にあって、ソースを見ただけでは何をしているのか分かりにくいSeleniumは操作に画面の要素名利用するため、例えばサイトのデザインを大幅に変えたりすると、テストの中身も大幅に書き換えな
皆さん、楽しくテスト書いてますか~~~ 今日は、 rack-legacy を使うことで、 PHP のアプリケーションなのになぜか Ruby のコードでテストできて(受け入れテストのあたりですけど)、そうすると本物の RSpec とかが使えて楽ですよ、と言う話をします。 rack-legacy とは。 まず、 Rack とは、 Ruby 製のウェブアプリケーション(Ruby on Rails、Sinatraなどをご存知かもしれません)とサーバ(Apache/Passenger、NginX、Lighttpdなどなど…)をつなぐ一種の規格です。 Perl や Python にも似たような仕組みがあります。 ここで、 Rack::Legacy というミドルウェアを使うと、他の言語の CGI や、 PHP のアプリケーションが Rack の上で動かせます。 そして、 Rack の上で動くということは
PHPでテストケースを作成する場合、ネイティブ関数を使っているようなコードに対してテストを実行しようとすると、どうしても環境に依存したり、実リソースにアクセスする必要が出てしまうことがあります。 この記事では、そのような問題に対する対処法を提示します。 経緯みたいなもの 先日もWeb APIをコールするPHPライブラリを書いていたのですが、HTTPをたたく部分のテストを切り離せず、もやもやしていました。 ちょっと前にPerlのTest::Timeというライブラリを教わって感動していたのですが、PHPでもネイティブ関数をオーバーライドできたらどんなにすばらしいだろう、などとぼやいていたのです。 そんなときに、@takimoにPHP 5.3ならオーバーライドできるよねって言われて、ハッと思い立ってテストに組み込む方法を考えてみたところ、割とスマートに実現できそうな方法が見つかったので、方法論の
11/07/07 PHPだけでコードやテストを保存したら自動でテストを実行しGrowlへ通知する環境 はじめに言っておきますが、これはリスペクトです。 コードやテストを保存したら自動でPHPUnitを実行しGrowlへ通知する環境 | Act as Professional - プロとしての行為 パクリではありません。 パクリではありません。 大事なことなので2回言いました。 上記 HIROCAST さんのブログを昨日拝見し、これはあのツールのブログを書く時が来たと思いました。 そのツールとは Stagehand_TestRunner - テスト駆動開発のためのテストランナー - Piece Framework です。 Stagehand_TestRunner は、PHP テスティングフレームワークの実行を強力にサポートするツールです。対応フレームワークは、PHPUnit
TDDやってますか?テストを書いて、実行。コードを書いて、テストを実行。PHPUnitコマンドを1日に何度も叩いているPHPerに朗報です。コードとテストを修正して保存をすると、それを検知して、自動的にPHPUnitを走らせて、結果をGrowlで通知する環境をつくりました。これで、TDD Boot Camp in Tokyo #tddbcもテンポ良くすすめられますね。 gem watchr インストール PHPerには申し訳ないのですが、Rubyのgemを使います。 gem install watchr growlnotify インストール Growlへの通知をするgrowlnotifyをインストールします。 Growlをダウンロードして、Extraディレクトリに含まれている、growlnotifyをインストールしてください。 環境をcloneする hirocaster/phpunit-s
php-console - Google Chrome extension for displaying PHP errors/exceptions/debug messages in browser console or notification popups - Google Project Hosting PHPのエラーなんかをブラウザで確認できるChrome拡張「php-console」。 Chromeの拡張とPHPのソースコードで動かすもので、PHPのエラーを、Chromeのコンソールウィンドウや、画面内にポップアップでポコポコ出せたりします。 要はChrome用のFirePHPみたいなものです。 以下のようにエラーレベルとエラーメッセージが表示されます。 コンソールの例 ポップアップの例 この機能が使えるかどうか?はアドレスバーで確認できます。使える場合はアイコンが次のように表
はじめに 単体テストとは、システムの構成要素であるクラスやメソッド単位での動作を確認する作業のことを言います。 Webシステムは基本的に不特定多数に公開するものであり、公開前にはきちんとテストを行っておくことが重要です。 PHPにはテストツールとしてPHPUnitという単体テストのツールがあり、PHPUnitを利用するとクラス内のメソッドに対してテスト用のクラスを自動で生成し、効率よくテストすることができます。 PHPUnitを利用して単体テストする場合のプロセスは テスト対象となるクラス、PHPプログラムの作成 1.で作成したクラスからPHPUnit内のクラスを用いてテスト用のクラスを作成 2.で作成したテスト用のクラスに目的に応じてテストメソッドの実体を記述 テスト実行、結果の確認 となります。 本記事では、本連載第4回『GPS携帯を使った口コミサイト構築』の逆ジオコーディング処理をテ
今回取り上げるテスティングフレームワークライブラリ,アプリケーションの品質を高めるために必要不可欠なテストですが,そのテストを実行するためのツールに関する情報を集めました. phpt PHPUnit SimpleTest lime DocTest PHPSpec phpthttp://qa.php.net/write-test.php PHP 独自のテスト機構 PHP 本体,PEAR のテストで最も良く使われる.テストファイルの拡張子は .phpt TAP*1 対応:PEAR 1.5.0 から対応 pear run-tests コマンドに -t オプションを付けると run-tests.log に TAP フォーマットのログが出力される特徴: pear コマンドが使えればテストを実行できるため,大抵の環境で動かせる GET/POST/Cookie, php.ini 設定, 標準入力をパラメ
GT Nitro: Car Game Drag Raceは、典型的なカーゲームではありません。これはスピード、パワー、スキル全開のカーレースゲームです。ブレーキは忘れて、これはドラッグレース、ベイビー!古典的なクラシックから未来的なビーストまで、最もクールで速い車とカーレースできます。スティックシフトをマスターし、ニトロを賢く使って競争を打ち破る必要があります。このカーレースゲームはそのリアルな物理学と素晴らしいグラフィックスであなたの心を爆発させます。これまでプレイしたことのないようなものです。 GT Nitroは、リフレックスとタイミングを試すカーレースゲームです。正しい瞬間にギアをシフトし、ガスを思い切り踏む必要があります。また、大物たちと競いつつ、車のチューニングとアップグレードも行わなければなりません。世界中で最高のドライバーと車とカーレースに挑むことになり、ドラッグレースの王冠
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く