Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
仕事でPHPUnitを使うようになって1年くらいが経ち、チーム内にテスト書く文化が定着してきました。 テストの質と量が向上して、有効性も高まってきていい感じだなーと思う反面 「時間かかり過ぎ 」 という、面倒くさい問題が浮上してきました><。 現状のテスト実行ログ % ./vendor/bin/phpunit PHPUnit 3.7.28 by Sebastian Bergmann. ............................................................... 63 / 612 ( 10%) ............................................................... 126 / 612 ( 20%) .............................................
なぜPHPUnitを使わないか PHPでテストといえば、おなじみPHPUnit。モック・スタブも実装されており、PHPUnitさえ使っていれば困ることもなく…。 いえ、私は困りました。PHPUnitのモック、すこし記述が冗長になるのが欠点。CakePHPといったフレームワークを横断的にテストする際、テストコードが整然と並ばず複雑な入れ子になったとき、これはまずいと直感し他の技術を探し求めたのです。 そこで知ったのがPhakeフレームワーク。Javaのモック・フレームワーク"Mockito"が由来だそうです。 https://github.com/mlively/Phake すでにPhakeに関する記事はいくつか書いていますが、今一度まとめておきます。 CakePHPにPhakeを導入するノウハウ CakePHPはテストクラスがPHPUnitに依存しているため、他のフレームワークの介入には工
初心者がテストコードを書くようになった経緯とオススメのテストフレームワーク 初めまして会社の隅っこで働いているvolと窓際で働いてるnagodonです。 今回は機会がありまして別のプロジェクトメンバー同士で技術ブログを書くことになりました。 テストコードを業務で使ったことがなかった二人が探りながらテストコードを書いたお話を、 前半をvol、後半をnagodonが行っていきたいと思います。 よろしくお願いします。 テストコードを書き始めた切っ掛け 私、volのプロジェクトでの切っ掛けは唐突でした。 ちょっと難しい機能を実装する事になり以下の内容で悩んでました。 1.時間足りない・・・ 2.仕様が複雑で設計大変 3.分担難しいけど一人じゃ間に合わない・・・ でもやらなくちゃいけないんだよ!! 時間が無いながらも大きな機能から小さい機能を切り出して 一個一個丁寧に設計 設計が出来上がった所、 手
最近になってPHPUnitをちゃんと使ってユニットテストを書くようになってきたのですが、まだまだTipsが足りないと感じます。個人的に実践している書き方をいくつか並べてみます。 追記:最初、シェバングと書いていましたが、オプションを渡せる数が決まっていたりOSによっては動かなかったりとあまり便利でないことがわかりました。。phpunit.xmlを書いた方がいいかも。 ちょっとしたテスト → シェルスクリプト化する PHPUnitは高機能なのですが、いかんせん最初の障壁が高いと思います。とにかく気軽に書きたいなら、シェルスクリプトを作って単独ファイルで実行できるようにするといいです。 #!/bin/sh phpunit --colors *Test.php # ↑オプションを書き並べておく <?php class SampleTest extends PHPUnit_Framework_Te
PHP5.4 Advent Calendar 2011の7日目です。昨日は@madapajaさんの「PHP5.4+ で開発が行われている BEAR.Sunday フレームワークを動かしてみる」でした。 さてさて皆さん、ユニットテストしてますか? PHPもテストのライブラリが充実してきており、カバレッジ100%に情熱を燃やしている方も多いことでしょう。 ユニットテストで困るのが、private/protectedメソッドです。外から呼べないので、普通の方法ではテストできません。(protectedは適当なダミーのサブクラスを作ってそこからテストできますが、ちょっと面倒です。) まあ当然です。外から呼べないようにprivateにしているので、簡単に呼べたら逆に困るわけです。しかしながら、privateメソッドも外から呼んでテストできた方が開発ははかどるでしょう。この記事ではPHPでprivat
はじめに このエントリーは TDD AdventCalendar 2013 の第21目の記事です。 前日のエントリーは、tq_jappyさんによる「レガシーテストコード改善ガイド #TddAdventJp」でした。 わたしも Advent Calendar 初参加です。どうぞよろしくお願いします。 この記事では主に TDD とはなにか聞いたことはあるけど、実践したことはない、というような方を対象に、 CakePHP と PHPUnit を使った TDD の進め方をご紹介したいと思います。 CakePHP と PHPUnit はそれぞれ開発環境にインストールされて、使える状態になっていることを仮定します。 準備 まずは CakePHP インストール直後の、この画面が出るところから始めます。 何をテストするか 今回はテスト対象として、ソーシャルゲームでよくあるような処理を取り上げてみたいと思い
class TwitterClient { public function tweet($message) { return true; } } $hoge = new TwitterClient(); $hoge->tweet('大心なう'); // trueが返る class ClientContainerTest extends PHPUnit_Framework_TestCase { public function test_モックを書いてみる() { $hoge = $this->getMock('TwitterClient', array('tweet')); $hoge->expects($this->any()) ->method('tweet') ->will($this->returnValue(true)); $hoge->tweet('大心なう'); // true
「はじめに」の「はじめに」 2016年版としてマイグレーションしました。 特にこだわりが無い場合は、こちらを参照してください。 はじめに こんな感じで資料を作ろうとしていた草稿です。 文中のソースコードの正誤とかは見きれていません。 ツッコミとか有れば、よろしくお願いしますm( _ _ )m PHPUnitを使ったからといって、どんなソースコードもテストできる訳ではありません。 テストをし易いようにクラスを設計している必要があります。また、そのように設計していてもUnitテストに入れることの出来ない箇所は出てきます。Unitテストに入れることの出来ない箇所は出来ないと割り切らなければなりません。むしろ、どれだけのコードをUnitテストに入れることが出来るか? というのが設計者の腕の見せどころになるでしょう。 極論を言うと 「どんなクラスでも疎結合に実装していなければならない」 ということで
お手持ちの環境で、下記のように表示される方は問題ありません。安心して、TDD Boot Camp in Tokyoにお越しください。 $ phpunit --version PHPUnit 3.5.14 by Sebastian Bergmann. さて、そうではない方に向けての記事です。PHPUnitを自分の環境に構築しましょう。 PHPUnitはJUnitを参考にしてつくられた、PHP向けのxUnitツールです。PHPのテスティングフレームワークでは鉄板のツールです。(あんまり僕は使う機会がないのだけれど) 環境 以下の環境が必要です PHP 5.2.7 以上 インストール方法 pear channel-discover pear.phpunit.de pear channel-discover components.ez.no pear channel-discover pear.s
PHPUnitの使い方 PHPUnitは、オブジェクトのテストにだけ使えるのかと思っていましたが、単純な関数の単体テストでも有効なんですね。(ドキュメントのサンプルは、関数のテストが載ってますが) とういわけで、PHPUnitの単純な使い方を紹介します。 PHPUnitの使い方を参考にしました。(というかそのまんまです。すみません。というか、ありがとうございます。) ■1. 何をテストするか? スクリプトにアクセスしたユーザのログをファイルに記録する関数をテストすることにします。 bool loginLogWriter(string user) userを引数にとり、ファイルに、user、アクセス日時を書き込みます。 user、アクセス日時は、1回のアクセスに付き、1行をファイルの最後にタブ区切りで追記します。 書き込みが正常に終了した場合に、trueを返します。失敗した場合は、false
先日、今年の 1 月以来となる Stagehand_TestRunner の最新バージョン 2.7.0 のリリースを行いました。コマンドラインのテストランナーを提供するこのプロダクトは、テスト駆動開発 (TDD: Test Driven Development) をより快適にすることを目的としています。 今回は Stagehand_TestRunner の特徴と使い方をご紹介いたします。 Stagehand_TestRunner とは? Stagehand_TestRunner とは、PHPUnit や SimpleTest といった PHP のテスティングフレームワーク向けに書かれたテストの実行に特化した Piece Framework のプロダクトで、下記のような特徴があります。 指定されたディレクトリに含まれるテストの実行 指定されたファイルに含まれるテストの実行 指定されたファイル
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く