Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

どんなにすぐれたプログラマも、間違いを犯します。 よいプログラマとそうでないプログラマの違いは、 よいプログラマはテストを行って間違いをできるだけ早く発見してしまうことです。 テストをするのが早ければ早いほど間違いを発見しやすくなり、 またそれを修正しやすくなります。 リリース直前までテストを先延ばしにしておくことが非常に問題であるのはこのためです。 そんなことをすると、すべてのエラーを発見しきることができず、 発見したエラーを修正することも非常に難しくなります。結局は、 トリアージを行ってどのエラーに対応するかを判断しなければならなくなります。 なぜならすべてのエラーを完全に修正することは不可能だからです。 PHPUnit を使用したテストは、全体としてはあなたがこれまでに行ってきたことと同じです。 ただ、そのやり方が違うだけです。それは、テスト つまりあなたのプログラムが期待通りにふる
<?php require_once 'SampleClass.php'; class SampleClassTest extends PHPUnit_Framework_TestCase { public function testAccessProtectedProperty() { $foo = self::getProperty('foo'); $obj = new SampleClass(); $this->assertTrue($foo->getValue($obj)); } public function testAccessProtectedMethod() { $foo = self::getMethod('hoge'); $obj = new SampleClass(); $this->assertTrue($foo->invokeArgs($obj, array())
例 4.1 で、 PHP の配列操作のテストを PHPUnit 用に書く方法を示します。 この例では、PHPUnit を使ったテストを書く際の基本的な決まり事や手順を紹介します。 Class という名前のクラスのテストは、ClassTest という名前のクラスに記述します。 ClassTest は、(ほとんどの場合) PHPUnit_Framework_TestCase を継承します。 テストは、test* という名前のパブリックメソッドとなります。 あるいは、@test アノテーションをメソッドのコメント部で使用することで、それがテストメソッドであることを示すこともできます。 テストメソッドの中で assertEquals() のようなアサーションメソッド (「アサーション」 を参照ください) を使用して、期待される値と実際の値が等しいことを確かめます。 <?php class Stac
こんにちは。前回のPhakeのモックでCakePHPをテスト コントローラ篇にもレスポンスが頂けて嬉しいです。天の声に耳を傾けていると(ただのエゴ・サーチです…)素敵なご指摘が聞けたので、改訂版として掲載します。予定していた「コンポーネント篇」は改訂版のおかげで不要になりました! 準備も少なくて済む画期的な方法です。 ControllerでPhakeモックを使いたいという背景については前回の記事をそのまま残しますのでご参照ください。 -- ※本記事ではCakePHPにPhakeを導入する手法について解説しています。Phake自体の使い方やPHPUnit標準モックとの比較は過去の記事にて紹介しています。 2段階のサブクラスを作成する 前回と同じく、CakePHPのControllerTestCaseから機能を拡張するためMyControllerTestCaseを作成します。abstract
140313追記: 以下の方法を使わずに更にシンプルに準備できる改訂版を掲載しました。以下は古い内容をそのまま載せています。 -- 前回のPhakeのモックでCakePHPをテスト モデル篇の続きです。PhakeはPHPUnit標準のモック機構と違いWhen, Verifyに分けて定義を記述できる点が特徴で、流れを追いやすく一行もシンプルで済む今おすすめのモック・フレームワークです。 さて、このPhakeをCakePHPのController Testで活用しようとすると、いきなり壁にブチ当たります。 CakePHPはPHPUnitを標準採用している 幸か不幸かCakePHPはPHPUnitを標準で採用しており、高い親和性で書けるのが特徴ですが、Phakeといった外部テスト・フレームワークの入る余地は少なくなっています。 どうにかPhake一本でControllerのモック化が出来ないもの
Selenium Server はテストツールのひとつです。これは、OS を通してブラウザのプロセスを動かし、 ブラウザのタスクを自動実行します。 あらゆるプログラミング言語で稼動しているウェブサイトに対応しており、 現在主流のあらゆるブラウザで使用することができます。Selenium RC は Selenium Core を使用しています。これは、ブラウザ上でのタスクを自動的に実行する JavaScript のライブラリです。Selenium でのテストは、 一般のユーザが使用するのと同じようにブラウザ上で直接実行されます。 主な使用例としては、受け入れテスト (各システム単体のテストではなく、結合されたシステム全体に対するテスト) や ブラウザの互換性のテスト (ウェブアプリケーションを、さまざまなオペレーティングシステムやブラウザでテストする) などがあります。 PHPUnit_Se
初級者・中級者向けのユニットテストのサンプルは、 どんな言語を対象としたものであっても、 テストしやすいようなロジックに対してシンプルなテストをしているものばかりです。 データベースを扱う一般的なアプリケーションを考えると、これはまったく現実離れしています。 たとえば WordPress や TYPO3、あるいは Symfony で Doctrine や Propel などを使い始めるとすぐに、 PHPUnit でのテストがやりづらいことを実感するはずです。 データベースとこれらのライブラリが密結合になっているからです。 きっと日々の業務やプロジェクトでも身に覚えがあることでしょう。 自分の持つ PHPUnit に関する知識を駆使して作業を進めようとしたのに、 こんな問題のせいで行き詰ってしまうことが。 テストしたいメソッドがかなり大きめの JOIN 操作を実行し、 データを使って重要な結
例 2.1 で、 PHP の配列操作のテストを PHPUnit 用に書く方法を示します。 この例では、PHPUnit を使ったテストを書く際の基本的な決まり事や手順を紹介します。 Class という名前のクラスのテストは、ClassTest という名前のクラスに記述します。 ClassTest は、(ほとんどの場合) PHPUnit\Framework\TestCase を継承します。 テストは、test* という名前のパブリックメソッドとなります。 あるいは、@test アノテーションをメソッドのコメント部で使用することで、それがテストメソッドであることを示すこともできます。 テストメソッドの中で assertEquals() のようなアサーションメソッド (付録 A を参照ください) を使用して、期待される値と実際の値が等しいことを確かめます。 <?php use PHPUnit\Fr
<?php class API_Test_Skeleton extends PHPUnit_Framework_TestCase { private $test_domain = "api-test.localhost"; private $test_url = "/path/to/test_api_root/"; /* * Post Helper * Thanks * http://www.programming-magic.com/20080226023511/ * and http://abbadabba.coolk2.com/212/ */ private function do_post_request($url,$value) { $headers = array('Content-Type: application/x-www-form-urlencoded','Conten
PHPUnit 6.5 は PHP 7 以降のバージョンで動作しますが、最新版の PHP を使うことを強く推奨します。 PHPUnit を使うには、拡張モジュール dom、json、 が必要です。これらは通常、デフォルトで有効になっています。 PHPUnit また、拡張モジュール pcre、 reflection、 そして spl も必要です。これらは標準の拡張モジュールとしてデフォルトで有効になっており、 PHP のビルドシステムやソースファイルに手を加えない限り、 無効にすることはできません。 コードカバレッジをサポートするには Xdebug 2.5.0 以降と tokenizer 拡張モジュールが必要です。 XML 形式で情報を出力するには、xmlwriter 拡張モジュールも必要です。 PHPUnit を入手する一番簡単な方法は、PHP Archive (PHAR) をダウンロード
1. PHPUnit のインストール要件PHP Archive (PHAR)WindowsPHPUnit の PHAR リリースの検証Composerオプションのパッケージ2. PHPUnit 用のテストの書き方テストの依存性データプロバイダ例外のテストPHP のエラーのテスト出力内容のテストエラー出力エッジケース3. コマンドラインのテストランナーコマンドラインオプション4. フィクスチャtearDown() よりも setUp()バリエーションフィクスチャの共有グローバルな状態5. テストの構成ファイルシステムを用いたテストスイートの構成XML 設定ファイルを用いたテストスイートの構成6. リスクを伴うテスト無意味なテスト意図せぬうちにカバーされているコードテストの実行時の出力テストの実行時のタイムアウトグローバルな状態の変更7. 不完全なテスト・テストの省略不完全なテストテストの省略
PhpStorm 7 が PHPUnit 4 をサポートしていなかったので少し前まで PHPUnit は 3.7 を使っていましたが、9 月に PhpStorm 8 がリリースされ、PHPUnit 4 も動作するようになったので、そろそろ使っていこうかと思います。 なお、PhpStorm 7 で PHPUnit 4 が使えなかったのは次の理由だそうです。 PHPUnit マニュアル – 付録D アップグレード PHPUnit_Framework_TestListener インターフェイスに addRiskyTest() が追加されました。 PHPUnit_Framework_TestListener インターフェイスを実装するクラスは、新たにこのメソッドを実装する必要があります。 たとえば PHPStorm 7 で PHPUnit 4 が使えないのは、これが原因です。 PHPUnit 3.
<?php class PickSlowListener extends PHPUnit_Framework_BaseTestListener { private $test_start_time; private $test_time_results = array(); private $rank_limit; public function __construct($rank_limit) { $this->rank_limit = $rank_limit; } public function startTestSuite(PHPUnit_Framework_TestSuite $suite) { $this->test_start_time = microtime(true); } public function endTestSuite(PHPUnit_Framework_Tes
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く