PHPerKaigi 2024発表資料 https://fortee.jp/phperkaigi-2024/proposal/f23f927e-2ac8-498e-a047-6376831cbd07
もろもろの事情からWordPressをカスタマイズしてサービスを作る(らなきゃいけない)プロジェクトが続いていて、現在2つ目のサービスを開発中。1つ目のサービスは勝手がわからぬままガシャガシャと力技で組み上げたので、functions.phpとかそれはもうひどいことになってたんだけど、今回はできるだけモダンに、スマートに、テスタブルに書きたいなと思ってプロジェクト開始前にけっこう準備をした。目標はテーマをMVCっぽく書けるようにして、テスタブルにすること。 テーマMVCの仕組み オレオレ臭がプンプンするけど、とにかくエレメント毎にMとVとCを分けて書けるようにした。本当はファイル名やクラス名にプロジェクトのプレフィックスが入ってるんだけど、大人の事情もあるので消して掲載する。 ディレクトリ構成 テーマ内のディレクトリ構成は以下のようにした。CSSなどをcommonの中に置いたのは単にデザイ
仕事でPHPUnitを使うようになって1年くらいが経ち、チーム内にテスト書く文化が定着してきました。 テストの質と量が向上して、有効性も高まってきていい感じだなーと思う反面 「時間かかり過ぎ 」 という、面倒くさい問題が浮上してきました><。 現状のテスト実行ログ % ./vendor/bin/phpunit PHPUnit 3.7.28 by Sebastian Bergmann. ............................................................... 63 / 612 ( 10%) ............................................................... 126 / 612 ( 20%) .............................................
画面が正しく表示されているのか、を確認したいときにSeleniumを使うのは大変だなーと調べていたらCodeceptionを見つけました Codeception PHP Testing Framework is designed to work just out of the box. This means its installation requires minimal steps and no external dependencies preinstalled (except PHP, of course). Only one configuration step should be taken and you are ready to test your web application from an eye of actual user. だそうです。 導入は簡単、Quick
なぜPHPUnitを使わないか PHPでテストといえば、おなじみPHPUnit。モック・スタブも実装されており、PHPUnitさえ使っていれば困ることもなく…。 いえ、私は困りました。PHPUnitのモック、すこし記述が冗長になるのが欠点。CakePHPといったフレームワークを横断的にテストする際、テストコードが整然と並ばず複雑な入れ子になったとき、これはまずいと直感し他の技術を探し求めたのです。 そこで知ったのがPhakeフレームワーク。Javaのモック・フレームワーク"Mockito"が由来だそうです。 https://github.com/mlively/Phake すでにPhakeに関する記事はいくつか書いていますが、今一度まとめておきます。 CakePHPにPhakeを導入するノウハウ CakePHPはテストクラスがPHPUnitに依存しているため、他のフレームワークの介入には工
前回のお話でJenkinsとGitHubによる継続的インテグレーションの開発環境の設定を行いました。 GitHubとJenkins連動 自動デプロイ 開発環境設定編 今回は、継続的インテグレーションを行うにあたり実際にJenkinsでテストを実行した際に 「どんなテスト結果を表示してくれるのか?」ということをご紹介したいと思います。 現在FuelPHPを用いて開発を行なっているためここでのテストの実行にはPHPUnitを使用して行っています。 ちなみに余談ですが, Jenkinsってイギリス人の執事をイメージした名前だそうです。 プロジェクトに優秀な執事がいるような思いが込められてこの名前が付けられたと言われています。 参考:Jenkinsで始める継続的インテグレーション では、JenkinsというよりはPHPのUnitテストでどんなレポートを表示してくれるのか? たくさんあるのですが、大
序文 ソフトウェア開発とはままならないものだ。そもそも開発と銘を打たれているにも関らず製造工程のような量的単位「工数」で管理しようとしているので致し方無いのかも知れない。そう、開発と言うからには「作ったことの無いものを作る」ということであるにも関わらず、 ・「何人がかりで何日で出来る?」と聞く ・「何日くらいですかね、やってみないと分からないけれど」と答える ・「分からないけれど」はとりあえず無視して、何日かの余分をとってスケジュールを作る そんなことをしていれば古典落語に出てくる「致し方ないけれど起こる残念な出来事」のようなオチにしかならないのは目に見えているのだが、これは現実によく有るやりとりである。しかし、これでもまだマシな部分も有る。少くとも作ろうとしてとしている人が「何日で出来そうか?」について答えているからだ。作ろうとしている人ではない人が当てずっぽうに答えてスケジュールが決ま
Welcome! I assume that you came to this website looking for information on how to implement Continuous Integration (CI) and Continuous Delivery (CD) pipelines for PHP projects with Jenkins. Back in 2010, I created an Open Source template for Jenkins jobs for PHP projects and this website used to be the home of that project. I have neither used Jenkins nor updated the aforementioned template in qui
PHP5.4 Advent Calendar 2011の7日目です。昨日は@madapajaさんの「PHP5.4+ で開発が行われている BEAR.Sunday フレームワークを動かしてみる」でした。 さてさて皆さん、ユニットテストしてますか? PHPもテストのライブラリが充実してきており、カバレッジ100%に情熱を燃やしている方も多いことでしょう。 ユニットテストで困るのが、private/protectedメソッドです。外から呼べないので、普通の方法ではテストできません。(protectedは適当なダミーのサブクラスを作ってそこからテストできますが、ちょっと面倒です。) まあ当然です。外から呼べないようにprivateにしているので、簡単に呼べたら逆に困るわけです。しかしながら、privateメソッドも外から呼んでテストできた方が開発ははかどるでしょう。この記事ではPHPでprivat
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
前回挙げたチュートリアルはやってみましたか? 快適なテストライフを送ってますか? テストケースをたくさん書いていると気づくのは、フィクスチャがメンテナンスの邪魔をするということ。 フィクスチャに初期データを定義すると、それを気にしながらテストケースを作ることになります。 これがとても面倒くさいんです。 これを解消すべく、今日はモックを使ったテストケースの書き方を紹介します。 モックとは SimpleTestのモックで参考になるのは、以下の書籍です。 Webアプリケーションテスト手法 著者: 水野 貴明 (著), 石井 勇一 (著), 新藤 愛大 (著), 岸田 健一郎 (著), 荻野 淳也 (著), 安井 力 (著), 田中 慎司 (著) 出版社: 毎日コミュニケーションズ 発売日: 2008/7/25 この書籍のp154にモックについて以下のように書いてあります。 モックを使うと
Webシステム開発で使っている便利なツールをあげてみました。 あらためて社内の開発環境を見直す機会があったので、使っているツールを並べてみました。こうして見ると色々なツールを使って開発をしていますね。わりと定番系なものが多いですが、良かったら参考にどうぞ。 1. Apache / PostgreSQL / PHP Mac OS X に MacPorts でインストールしたApache / PostgreSQL / PHP 環境を使って開発をしています。 PHPは5.3、PostgreSQLは8.4 or 9.0です。 ただ旧バージョンのPHPを使ったり、Linux でなければ動かないモジュールを使うこともあるので、その際は社内のCentOSサーバにSSHで入って開発したりもします。 Vimを使ってるので、SSHで入ればどのサーバでも開発できるのは利点ですね。 Mac を使い出して、しばらく
php, simpletest | 18:46 | テスト駆動開発に興味が沸いたし、テストツールの一つも使えないようじゃ駄目だよねぇと思ったので、SimpleTestを勉強してみることにした。 参考図書・サイトテスト駆動開発入門http://simpletest.org/index.html 第1章 複数通貨のMoneyオブジェクト sample1.php #!/usr/bin/env php ?> testDollar.php #!/usr/bin/env php set_include_path(get_include_path() . PATH_SEPARATOR . dirname(dirname(__FILE__))); require_once('simpletest/autorun.php'); require_once('sample1.php'); class TestO
2013-04-14 cis 2013-04-02 CandyCane|インストール方法 2013-02-17 プライバシーポリシー 2013-01-29 test 2013-01-20 Arduino 2013-01-18 KinoWiki:プラグイン/カタログ/outline 2012-12-08 AppleScript 2012-11-06 ペルソナ2罰 2012-09-04 LVM 2012-08-02 reveal-js &strlen()文字 SimpleTestはPHPUnitと比べてはるかに多くのテスト用メソッドが用意されています。ここではSimpleTestの基本となるUnitTestCaseに実装されているテスト用メソッドの判定条件と、そのメソッドを使った実際に動作するテストケースを用意しました。これらのメソッドを利用して、テストの結果が特定の条件を満たしているかどうか
SimpleTest – Unit Testing for PHP symfonyのUnitTestにも使われているSimpleTestがその名の通りシンプルでいい感じです。 ダウンロードして解凍して適当なディレクトリに置くだけ。 ドキュメントにもサンプルは書いてありますが、CLI(シェル)で使うならこんな具合。 require_once 'simpletest/unit_tester.php'; require_once 'simpletest/reporter.php'; require_once 'Hoge.php'; // テストしたい対象 class Test_Of_Hoge extends UnitTestCase { public function __construct() { $this->UnitTestCase(); } public function testHog
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く