<?php class SomeTest extends PHPUnit_Framework_TestCase { function testSomething() { $this->assertEquals(2, 1+1); //普通こう書くけど self::assertEquals(2, 1+1); //これでもOK } }
![PHPUnitの$this->assertXXXX() の別記法 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/f280683c69fb8fc165a6f6d140b81bb020cd9a36/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9UEhQVW5pdCVFMyU4MSVBRSUyNHRoaXMtJTNFYXNzZXJ0WFhYWCUyOCUyOSUyMCVFMyU4MSVBRSVFNSU4OCVBNSVFOCVBOCU5OCVFNiVCMyU5NSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YmZlMWUzZGIzZWQyNzcyNDRiZGQyNDlhZDBkMjY4ZDU%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwSGlyYWt1JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1kNmRlMjUyMDQ4YTJiNjhhN2Q3NDU1ZTZmMjRiNTYzYw%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D1c655cd603e10783d109724a54a08f81)
1. 自動テスト2. PHPUnit の目標3. PHPUnit のインストールRequirementsPHP Archive (PHAR)PHPUnit の PHAR リリースの検証Composerオプションのパッケージアップグレード4. PHPUnit 用のテストの書き方テストの依存性データプロバイダ例外のテストPHP のエラーのテスト出力内容のテストアサーションassertArrayHasKey()assertClassHasAttribute()assertClassHasStaticAttribute()assertContains()assertContainsOnly()assertContainsOnlyInstancesOf()assertCount()assertEmpty()assertEqualXMLStructure()assertEquals()assertFa
単体テストはpublicで公開されているものだけで十分という意見が主流のようだ。 しかしprtectedメソッドにもサブクラスに「使ってもらう」意図がある場合など、むしろしっかりテストで固めておきたい場合もある。 prtectedで定義されたメソッドは外部から呼べないので、テストは難しい。 よくやる方法は、単体テスト用にターゲットクラスのサブクラスを作ることだ。 PHPではメソッドのオーバーライドするときに、アクセスレベルをprotectedからpublic に緩めることができるので、 そのなかで親クラスのprtectedメソッドをしれっと呼び直せばよい。 <?php class Target { protected function getRealName() { return __METHOD__; } } ?> <?php class TargetExp extends Target
注意 このドキュメントは、すでにサポートが終了したバージョンの PHPUnit に関するものです。 最新版の PHPUnit のドキュメントは こちらにあります。 オブジェクトに対するコールが正しく行われたかどうかを調べたいこともあるでしょう。 その方法をここで説明します。ここでは、別のオブジェクトを観察している あるオブジェクトの特定のメソッド (この例では update()) が正しくコールされたかどうかを調べるものとします。 例 10.1 では、まず PHPUnit_Framework_TestCase クラスの getMock() メソッド (表 20.7 を参照ください) を使用して Observer のモックオブジェクトを作成します。 getMock() メソッドの二番目の (オプションの) パラメータに配列を指定しているので、Observer クラスの中の update()
どんなにすぐれたプログラマも、間違いを犯します。 よいプログラマとそうでないプログラマの違いは、 よいプログラマはテストを行って間違いをできるだけ早く発見してしまうことです。 テストをするのが早ければ早いほど間違いを発見しやすくなり、 またそれを修正しやすくなります。 リリース直前までテストを先延ばしにしておくことが非常に問題であるのはこのためです。 そんなことをすると、すべてのエラーを発見しきることができず、 発見したエラーを修正することも非常に難しくなります。結局は、 トリアージを行ってどのエラーに対応するかを判断しなければならなくなります。 なぜならすべてのエラーを完全に修正することは不可能だからです。 PHPUnit を使用したテストは、全体としてはあなたがこれまでに行ってきたことと同じです。 ただ、そのやり方が違うだけです。それは、テスト つまりあなたのプログラムが期待通りにふる
<?php class SampleClass { protected $foo = TRUE; protected function hoge() { return TRUE; } } <?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::
例 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
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く