Welcome to PHPUnit! PHPUnit is a programmer-oriented testing framework for PHP. It is an instance of the xUnit architecture for unit testing frameworks.
筆者は最近PHPを使い始めました。 PHPは型キャストをしなくとも文字列と整数などを勝手にキャストしてくれるなど、型をあまり気にせずにプログラムを書いても、なんとなく動いてくれます。 もちろん変数の型宣言もなし、です。 こういった動的な、弱い型付けを持つ言語では、キャストなどに必要なコードの量を減らすことができる反面、プログラマの意図しない変換が行われてしまうことがあり、原因のわかりづらいバグを生み出しがちです。 静的であれ、動的であれ、コンパイラのチェック(と制約)が弱いとき、バグを減らすために重要なのは、プログラムを小さな単位に分解し、それぞれの動作を検証することができるようにすることです。 そうすると、プログラムが動かないとき、テストを使ったバグの原因推定を行いやすくなるからです。 というわけでユニットテストのツールを導入してみました。 今回は、ググってみて有名そうだったPHPUni
というわけで @mon_sat です! PHPUnitについてのセッションということで気合い充分で参加してきました。 この8時間耐久シリーズはノマドのなかのノマドであり、安藤の中の安藤である@yandoさんが、無償で行っているセミナー(?)です。 コワーキングスペースのなかのコワーキングスペースである下北沢オープンソースカフェにて、午前中から夕方まで、みっちりPHPUnitについて学んできました。 PHPUnit使ってますか? 普段テストを書いていないとは言えませんが、胸を張って言えるレベルではないわたし。 独習でやってきていると基礎体力の点で充分とは言えないもの。今回はみっちりと筋トレしてこようと思い参加した次第。 8時間耐久PHPUnitの教室 View more presentations from yandod 午前中はPHPUnitのインストールが中心。 しかしそこはサービス精神
PHPUnit の WebUI の VisualPHPUnit というのがありました。 https://github.com/NSinopoli/VisualPHPUnit CodeIgniter はもともとコマンドラインを使わないため、ユーザの中にはコマンドラインに親しんでおらず、ブラウザからテスト結果をみたいという人もいます。この VisualPHPUnit を CIUnit で使ってみます。 上記より、v1.5.1 をダウンロードします。 フォルダ名を「VisualPHPUnit」に変更し、CIUnit をインストールした CodeIgniter のフォルダに移動します。 ci-ja/ application/third_party/CIUnit/ tests/ VisualPHPUnit/PHP から書き込みできるようにパーミッションを設定します。 $ chmod o+w hist
Example 2.1 で、 PHP の配列操作のテストを PHPUnit 用に書く方法を示します。 この例では、PHPUnit を使ったテストを書く際の基本的な決まり事や手順を紹介します。 Class という名前のクラスのテストは、ClassTest という名前のクラスに記述します。 ClassTest は、(ほとんどの場合) PHPUnit\Framework\TestCase を継承します。 テストは、test* という名前のパブリックメソッドとなります。 あるいは、@test アノテーションをメソッドのコメント部で使用することで、それがテストメソッドであることを示すこともできます。 テストメソッドの中で assertSame() のようなアサーションメソッド (アサーション を参照ください) を使用して、期待される値と実際の値が等しいことを確かめます。 <?php declare(
注意 このドキュメントは、すでにサポートが終了したバージョンの PHPUnit に関するものです。 最新版の PHPUnit のドキュメントは こちらにあります。 オブジェクトに対するコールが正しく行われたかどうかを調べたいこともあるでしょう。 その方法をここで説明します。ここでは、別のオブジェクトを観察している あるオブジェクトの特定のメソッド (この例では update()) が正しくコールされたかどうかを調べるものとします。 例 10.1 では、まず PHPUnit_Framework_TestCase クラスの getMock() メソッド (表 20.7 を参照ください) を使用して Observer のモックオブジェクトを作成します。 getMock() メソッドの二番目の (オプションの) パラメータに配列を指定しているので、Observer クラスの中の update()
ほとんど本家の記事の意訳に近いですが、Intellijからdocker上のphpでphpunitを動かす設定をしてみました。 本家の記事: https://blog.jetbrains.com/phpstorm/2016/11/docker-remote-interpreters/ 環境 IntelliJ IDEA 2017.1.4 PHP Docker pluginをインストール 手元で確認はしていないですが、元訳がPhpStormなので、PhpStormでも同じかと思います。 Remote Interpreterの設定 Preferences -> Languages & Frameworks -> PHPを開きます CLI Interpreterの[…] ボタンをクリックします CLI Interpretersの画面が開くので左上の[+]をクリックし[From Docker, Vag
2012-11-09 FuelPHPをやってみる (6) - モデルテストとモック - PHP FuelPHP テスト 例えば以下のようなモデルクラスがあった場合 fuel/app/classes/model/items.php <?php class Model_Items extends \Model_Crud { protected static $_table_name = 'items'; public static function findById($id) { $entry = null; try { $entry = static::find_one_by('id', $id); } catch (Database_Exception $e) { Log::warning($e->getMessage()); } return $entry; } } まぁ単純にID値から
140313追記: 以下の方法を使わずに更にシンプルに準備できる改訂版を掲載しました。以下は古い内容をそのまま載せています。 -- 前回のPhakeのモックでCakePHPをテスト モデル篇の続きです。PhakeはPHPUnit標準のモック機構と違いWhen, Verifyに分けて定義を記述できる点が特徴で、流れを追いやすく一行もシンプルで済む今おすすめのモック・フレームワークです。 さて、このPhakeをCakePHPのController Testで活用しようとすると、いきなり壁にブチ当たります。 CakePHPはPHPUnitを標準採用している 幸か不幸かCakePHPはPHPUnitを標準で採用しており、高い親和性で書けるのが特徴ですが、Phakeといった外部テスト・フレームワークの入る余地は少なくなっています。 どうにかPhake一本でControllerのモック化が出来ないもの
This domain may be for sale!
MakeGood のように自動というわけにはいきませんが、NetBeans からも FuelPHP の PHPUnit によるユニットテストを実行できます。 なお、NetBeans の仕様により、MakeGood と同じく、テストファイル名は Test.php で終わる必要があります。 NetBeans のインストール方法については、NetBeans 7.1 と プログラミング用フォント Ricty のインストール をご覧願います。 NetBeans の設定 Tools メニューから Options を選択します。 PHP の General タブをクリックし、PHP 5 Interpreter と Global Include Path を設定します。 PHP の Unit Testing タブをクリックし、PHPUnit script を設定します。 プロジェクトの設定 プロジェクトの
I recently had a fun idea, that I wanted to try and implement for PHPUnit. I really like coloured console output. PHPUnit already has the option for coloured output, but I wanted more. I wanted to get coloured text for F, E, S, and I that showed up in the test run progress. I also figured this might be something others might want, and that I’d create a patch for PHPUnit. This of course meant I’d n
Mac OS X Mountain Lion に PEAR と PHPUnit をインストールする方法をメモ。 大枠は下記サイトを参考にしました。ありがとうございます。 PHPUnit on Mac OS X Snow Leopard 10.6 and Lion 10.7 | Everything Frontend PEAR のインストール $ cd /tmp && mkdir pear && cd pear $ curl -O http://pear.php.net/go-pear.phar $ sudo php -d detect_unicode=0 go-pear.phar 1. Installation base ($prefix) : /usr/lib/php 2. Temporary directory for processing : /tmp/pear/install 3.
Frameworks provide a tool for rapid application development, but often accrue technical debt as rapidly as they allow you to create functionality. Technical debt is created when maintainability isn't a purposeful focus of the developer. Future changes and debugging become costly, due to a lack of unit testing and structure. Here's how to begin structuring your code to achieve testability and maint
Keyword: Mac, MacPorts, PHP, PHPUnit, EMOBILE, D21LC? 先日テスト駆動開発の勉強会に参加したのですが、環境構築でタイムアウト…というのも EMOBILE の USB モデムが一部の port を遮断してた。ひどい。 うちの D21LC の場合は、EMOBILE の接続ユーティリティから[ユーザ設定]→[接続先プロファイル]で「プロトコル制限あり」以外を選択するようにしたら SSH でもなんでも繋がるようになりましたε-(´∀`*)ホッ まぁそれはそれで置いといて、今週やっと PHPUnit の導入が終わったので記録しておきます。 環境 Mac OS X MacPorts 1.9.2 PHP 5.3.6 PEAR 1.9.3 PHPUnit 3.5.14 ※今回導入した インストール PHPUnit のインストール(PHPUnit Manu
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
PHPUnit 6.0.0が2017/02/03にリリースされました。その後立て続けにバージョンがあがり、02/08に6.0.6がリリースされています。 主な変更点 要件 PHP 7.0以上が必要になりました。 名前空間 PHPUnit_Framework_TestCaseがPHPUnit\Framework\TestCaseに変更されました。 もし、既存のテストコードを変更できない場合は、bootstrapに以下のハックを追加することで対応できます。 if (! class_exists('PHPUnit_Framework_TestCase')) { class_alias('PHPUnit\Framework\TestCase', 'PHPUnit_Framework_TestCase'); } デフォルト設定 デフォルト設定が変更されました。 backupGlobals="true
数年ぶりにWordPressを触ることになり、色々覚え書きがてら書いていきます。 基本的にWordPressの人ではないです。 テストをするだけでなく、プラグイン内の関数を直接起動して開発したくてPHPUnitを導入することにしました。 フック使えよとか、まあそうなんですがフックの数多すぎでよくわからんのです。 動作させている環境ですが、OSX上のVagrantにCentOSを乗っけて、その中でDockerを使ってUbuntu環境でWPを動かしています。 ですので、ファイルのパーミッションとか実行するユーザーなどは少し変です。 WP-CLIのインストールWPの便利ツールです。CLI大好き派としては大変ありがたいです。インストールは全くもって簡単です。 http://wp-cli.org に書いてあるようにダウンロードしてパスの通っている場所へ移動させるだけです。 これを使ってphpunit
すげー便利そうに見えて、微妙に使いづらい子だな…という印象。(言いたいこと終わり) https://phpunit.de/manual/current/ja/appendixes.assertions.html 配列のアサーションの問題 例えば、ある関数の実行結果がこういう感じの配列をだとしよう。 [ [ 'name' => 'taro', 'gender' => 'male', 'updated' => '2015-08-10 12:01:13', ], [ 'name' => 'hanako', 'gender' => 'female', 'updated' => '2016-07-31 13:04:14', ], ]; 関数のテストを書くなら、↑の配列をexpectとして用意して、結果をassertEqualsで比較すればいい。 ところが、別に全部の要素を厳密に比較しなくてもいいこと
fooStack for CodeIgniter CIUnit: Unit testing for CodeIgniter CIUnit is a cool bridge between your CodeIgniter application and phpUnit. CodeIgniter 1.6.0+ ( tested with 1.6.X, 1.7.0, 1.7.1 and 1.7.2 ) PHP 5.1+ Download the current fooStack v0.17 - for CI 1.7.2 here! Download the slightly outdated fooStack v0.15 here - for CI 1.6.X, 1.7.1 For v0.15.zip please be aware that the installation is sligh
こんにちは、株式会社ウイングドアの田上です。 弊社では開発業務にGitHubを使っています。 折角GitHubを使っているので、 GitHub Actionsを使ってCI(継続的インテグレーション)を実施したいなと思い、やってみました💪 今回は弊社で多いLaravel案件でも使えるように、 表題の通りGitHub Actions + LaravelでのCIを構築してみます。 GitHub Actionsとは プッシュ、Issue、リリースなどのGitHubプラットフォームのイベントをトリガーとしてワークフローを起動しましょう。コミュニティが開発・保守し、ユーザが熟知・愛用しているサービスについて、対応するアクションを組み合わせて設定できます。 引用元:Actions | GitHub はじめかた GitHubにLaravelのリモートリポジトリを作成して、Actionsをクリックします。
privateメソッドのテストは、複雑なデータ構造を扱う時など開発途中で時々どうしても書きたくなります。 その外のpublicのテストでカバーできたら、private のテストは捨てちゃったりしますが。 Rubyだと send 使って何でもできるのに、と思いつつ調べつつPHPでテスト書いてみました。 PHPだと? PHP5.4時代のprivateメソッドテスト手法 #php5_4: Architect Note こちらが詳しいのですが 5.3以前だとReflectionMethodを使う方法がありますが、 5.4以降だとClosureが使えます。 5.3のClosureだと$thisが渡せなくて辛い想いを経験したことがありますが 5.4以降で対応してくれたようです。 ($thisのcontextを変えれえないのはclosureとしては辛い。。) Closure::bind を使った例 最近
2013/01/05 追記: 以下に、まとめ記事を書きました。 FuelPHPとGitLabとJenkinsで継続的インテグレーションする雛形を考えてみた http://madroom-project.blogspot.jp/2013/01/fuelphpgitlabjenkins.html -- 以下が済んでいる環境で、手順を確認しました。 UbuntuにPHP 5.4.10をインストールする http://madroom-project.blogspot.jp/2013/01/ubuntu550alpha2.html UbuntuにPHPUnitをインストールする http://madroom-project.blogspot.jp/2013/01/ubuntuphpunit.html UbuntuにXdebugをインストールする http://madroom-project.blog
ファイルシステムに変更が起きたイベントを処理するGuradとPHPUnitを利用して、ファイルを編集した後自動でテストが走るようにする。 gemをインストールする gem install guard gem install guard-phpunit gem install terminal-notifier-guard もし上記コマンドを実行している時に追加パッケージのインストールを求められたらインストールする。(rb-fsevent等) Guardの起動と設定 テストファイルが含まれているディレクトリまで移動し、以下を実行する。 guard init 以下のように新しいGuardfileが作成されて、PHPUnitに追加されたらOK 17:29:04 - INFO - Writing new Guardfile to /Users/ikemonn/Guardfile 17:29:04
超不定期雑記 ~プログラムとかサイエンスとかいろいろと~ 目次 ホーム 連絡をする RSS Login Blog 利用状況 投稿数 - 70 記事 - 0 コメント - 4725 トラックバック - 18 ニュース 前回の続き。関連ページがいくつかあるのでインデックスも参照のこと。 ここでも %ECLIPSE_HOME_PARENT% は Eclipse のインストールフォルダの親(Eclipse の実行ファイルのパスが c:\user\xampp\eclipse\eclipse.exe なら %ECLIPSE_HOME_PARENT% は c:\user\xampp)とする。 アプリケーションの品質を高めようと思うと、ユニットテストは絶対必須の行程だと思う。 特に PHP の場合は通る関数しかコンパイルされないため、実際にすべての操作をしてみるまで文法エラーがあるのか否かすらわからない。
WordPress Theme開発でもPHPUnitでのテストが行えないかなと思ってたので作ってみました。 wp-theme-phpunit function _manually_load_plugin() { register_theme_directory( dirname( __FILE__ ) . '/../../' ); switch_theme('your-theme'); } ↑ ポイントはここです。your-themeの部分を自身の開発中のTheme名に変更して、PHPUnitを実行させればOKです。 wp-plugin-unittest-dependency-patten ↑ こいつと組み合わせれば、自作のテーマに必要なプラグインもインストールした上でPHPUnitを実行できるようになります。 クライアントに納品用のサイトとかを作るときは、プラグインもそれぞれクライアント
CakePHP3 + Selenium3 + Facebook WebDriver + PHPUnitでテストを加速させる 私はテストがしたい! 地獄みたいなタイトルで申し訳ございません。 本当に申し訳ございません。 PHPUnitはその昔、Seleniumに対応した拡張機能がありました 昔々、PHPUnitはSeleniumに対応した拡張機能がありました。しかし、Selenium2のみの対応を機に拡張機能は亡くなってしまわれたのです。Selenium3には対応していません。 しかし、代替機能はある 優秀なテスト用ライブラリに facebook/php-webdriverがあります。 これをPHPUnitに埋め込めば、Seleniumを介してブラウザのヘッドレスのテストを行う事が可能です。 インストール Selenium Standalone Serverをダウンロードしてく http:/
日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。
CentOSにPHPのとりあえずの開発環境を作成してみる の続き。 xdebugとphpunitをyumでインストールしてみる。 xdebug 標準のリポジトリにはないのでepelからインストールする。 $ sudo yum -y install php-pecl-xdebug --enablerepo=epel 以上で、インストール完了。 $ php -i | grep "xdebug support" xdebug support => enabled phpunit 標準のリポジトリにはないのでepelからインストールする。 $ sudo yum install php-xml php-pear php-phpunit-PHPUnit --enablerepo=epel 以上で、インストール完了。 $ phpunit --version PHPUnit 3.7.29 by Sebas
今まで仕事でユニットテストというものを使った事がなかった(自動テストとか自動化というような文化があまりない・・・)。 仕事で PHP から離れたけど、家で PHP 使って遊んでいる。 せっかくだからユニットテストというものに触れて、ユニットテストを使ってみたい。 Zend Framework は PHPUnit が使われている。 それにあやかり、PHPUnit を使ってみる。 ググったら、PHPUnit3で始めるユニットテスト:特集|gihyo.jp … 技術評論社 が出てきた。 入門としてちょうどよさそう。 とりあえずサンプル通りに ArrayTest.php をコピペして、動かしてみる。 PHPUnit 3.2.13 by Sebastian Bergmann. .. Time: 0 seconds OK (2 tests)ちゃんと動いた。 次は ArrayTest ではなく、Zend
概要 phpunit, phpcs, phpmdをcomposer testコマンドで簡単に実行できるようにします。 準備 ※ 現在のBEAR.Sundayのアプリケーションスケルトンはこの準備は完了していています。 composer.jsonに以下のエントリーを記述します。 "require-dev": { "phpunit/phpunit": "~4.8", "squizlabs/php_codesniffer": "~2.3", "phpmd/phpmd": "~2.3" }, "scripts" :{ "test": [ "php vendor/phpmd/phpmd/src/bin/phpmd src text ./phpmd.xml", "php vendor/squizlabs/php_codesniffer/scripts/phpcs", "php vendor/phpun
1. PHPUnit のインストール要件PHP Archive (PHAR)WindowsPHPUnit の PHAR リリースの検証Composerオプションのパッケージ2. PHPUnit 用のテストの書き方テストの依存性データプロバイダ例外のテストPHP のエラーのテスト出力内容のテストエラー出力エッジケース3. コマンドラインのテストランナーコマンドラインオプション4. フィクスチャtearDown() よりも setUp()バリエーションフィクスチャの共有グローバルな状態5. テストの構成ファイルシステムを用いたテストスイートの構成XML 設定ファイルを用いたテストスイートの構成6. リスクを伴うテスト無意味なテスト意図せぬうちにカバーされているコードテストの実行時の出力テストの実行時のタイムアウトグローバルな状態の変更7. 不完全なテスト・テストの省略不完全なテストテストの省略
2011-11-01 Recently I did a lot of Test Driven Development on my Symfony2 bundle. I used PHPUnit’s built-in mocks and stubs for many projects, so I took it again. But while I was working on mocking Symfony2 core objects I found those mocks very uncomfortable in use. I tried Mockery and it saved my day. Let’s see how to get it working with Symfony2 and how it kicks ass! First of all, we need to put
Selenium2とPHPUnitでMac/Winブラウザ自動テストSelenium2とは ものすごいややこしいんだけど、SeleniumってSelenium◯◯っていうのが沢山あるよね…いったいどれが何なの?っていう迷子状態になって使うに至らない。そんな人、多いと思います。いや俺だけかも。そんな疑問に答えてくれる素晴らしいエントリー。 Selenium何とかっていうツールがやたら色々あるのはどういうわけなのか | 品質向上ブログ 非常に助かります。要は巷で噂のSelenium2っていうのは、Selenium WebDriverの事。これさえ分かっていれば迷子にならない。と思う。 いきなりまとめ Macで開発して、PHPUnitでSeleniumのテストコードを書いて、MacブラウザとVirtualBox経由仮想Windowsブラウザに対してテストを実行する。それだけ。 必要なソフトは「P
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く