タグ

PHPUnitに関するyouheyのブックマーク (12)

  • PHPUnitの使い方まとめ2016 - Qiita

    前置き 地味にこの記事が読まれ続けているみたいなのですが、内容がよい加減に古くて心苦しいので、もうちょっと現代的な内容にマイグレーションしたものを投稿しようと思います。当時と違ってQiitaにもよい記事増えているのに今更感あるのですが、あの記事に辿りついてしまった人のため……という感じで書いておきます。 大前提 PHPUnitを使ったからといって、どんなソースコードもテストできる訳ではありません。テストをし易いようにクラスを設計している必要があります。また、そのように設計していてもUnitテストに入れることの出来ない箇所は出てきます。Unitテストに入れることの出来ない箇所は出来ないと割り切らなければなりません。むしろ、どれだけのコードをUnitテストに入れることが出来るか? というのが設計者の腕の見せどころになるでしょう。極論を言うと 「どんなクラスでも疎結合に実装していなければならない

    PHPUnitの使い方まとめ2016 - Qiita
  • 短気なプログラマのためのPHPUnitクックブック

    「今までテストを書いたことがないから、そろそろテストを書かなくては・・・」という、PHPUnitもテストのこともまだ知らないプログラマにとって、一番最初に欲しいのは「何から始めたらよいのか」を知るためのガイドです。 書は、PHPUnitを使ったテストの書き方を、短時間で知るための小冊子です。これだけ読めば、PHPUnitでテストを書いていけるようになります。 書が特徴的なのは、ユニットテストの形式的な書き方だけを単純に説明したではないということです。書では、PHPUnitによるテストを、オブジェクト指向の原則に沿った、良いコードへリファクタリングしていくための道具、と位置づけています。その流れに沿って、必要最低限の基礎知識や、実際にありそうなサンプルコードで使い方が説明されています。モック(テストダブル)を使ったテスト、フィクスチャを使ったテスト、APIのテストといった対象ごとのP

    短気なプログラマのためのPHPUnitクックブック
  • PHPUnitを便利にするライブラリ幾つかつくった - gong023の日記

    年末年始+αの時間で PHPUnit をちょっと便利にするライブラリを幾つか作ったのでそれぞれ書いておく。 assert_chain https://github.com/gong023/assert_chain PHPUnit で一つの変数について詳しくアサーションをかけたい場合、以下のように書くことがあると思う。 <?php $arr = [ 'intKey' => 1, 'stringKey' => 'foo', 'boolKey' => true, ]; $this->assertNotEmpty($arr); $this->assertArrayHasKey('intKey', $arr); $this->assertSame(1, $arr['intKey']); $this->assertArrayHasKey('stringKey', $arr); $this->asser

    PHPUnitを便利にするライブラリ幾つかつくった - gong023の日記
  • header()関数を使ったメソッドをPHPUnitでテストする方法 | 1000g

    PHPUnit はテスト中のメッセージを逐一標準出力するため、header() 関数を用いたメソッドのテストができません。 header() 関数はその実行前の何らかの標準出力がされていると「Cannot modify header information」というエラーを吐いてしまいます。 以下、テストコードと対策をメモします。 現象 たとえば下記のようなテストケースはエラーで止まります。 class Api { public function output($data, $response_code = 200) { http_response_code($response_code); header('Content-Type: application/json'); // PHPUnitの標準出力のせいで、テストケース中にエラーになる $output = json_encode($d

  • 8時間耐久PHPUnitの教室

    下北沢で開催したPHPUnit講座の資料です。 動画などはこちら。 http://blog.candycane.jp/archives/1480 Read less

    8時間耐久PHPUnitの教室
    youhey
    youhey 2012/06/11
    もっとモダンにつかいたい
  • PHPUnitのMockObjectの紹介

    Editor's Notes\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n

    PHPUnitのMockObjectの紹介
  • PHPUnitのアンチパターンとベストプラクティス

    みなさんこんにちは。@ryuzeeです。 SlideShareを徘徊していたらPHPUnitのアンチパターン・ベストプラクティスに関する素晴らしいスライドを見つけたので内容を抜粋で紹介します。 1. テストの中で何もテストしていない class FooTest extends PHPUnit_Framework_TestCase { public function testSomething() { $foo = new Foo; $foo->doSomething(new Bar); } } こういうテスト。どこにもアサーションがなくて何もチェックしていません。 $foo->doSomethingの戻り値を検証しないならなんの意味もありません。 純粋にTDDをしていれば、テストコード作成→テスト実行でRed→プロダクションコード作成→テスト実行でGreenなのでこういうテストは登場しませ

    PHPUnitのアンチパターンとベストプラクティス
  • ユニットテストはなぜ必要なの?

    開発の全工程の中で、あまり人気がないのがテスト工程だ。ソフトウェアの品質を証明するためのテストは、なぜ低く見られてしまうのか(編集部) そもそもテストはなぜ実施するの? 皆さんはテストと聞いてどういったイメージをお持ちでしょうか。 「面倒くさい」「プログラマの仕事じゃない」「納期直前に徹夜でするもの」「そもそもしない」……。 残念ながら筆者の周りにいる開発者に聞いてみても、あまり人気のある工程とはいえないようです。 さて、連載で扱うテストとは、もちろん学期末の終わりに実施するような人の知識、習熟度を試すテストではありません。ソフトウェア開発におけるテスト、つまり「ソフトウェアの品質を証明するためのテスト」のことです。自分たちが作り上げたソフトウェアに対して自らテストし品質を評価する工程、そして、テスト結果は常に100点である必要があるという半ば自己満足的な性質を持つ試験のことです。 しか

    ユニットテストはなぜ必要なの?
    youhey
    youhey 2011/02/03
    必要性の説明に
  • TestCaseのコンストラクタは、含まれるtestメソッド数分だけ呼び出される - Do You PHP はてブロ

    知ってる人は知ってると思いますが、ちょっと「えー!」な感じだったので。 TestCaseオブジェクトのsetUpメソッドやtearDownメソッドは、testメソッドが実行される前後にそれぞれ呼び出されます。つまり、それぞれ、testメソッド数分呼び出されます。これはよくドキュメントに書かれているので知っていると思います。 一方、コンストラクタはどうかというと。。。 背景 最近、テストの数(ファイル数、testメソッド数、assert数)が増えてきて、全テスト実行するのに30分以上かかっています。中には、DBに接続してSQLを実行して想定している結果が返ってくることをテストしていたり、HTTPリクエストを送信してステータスコードやContent-Typeヘッダ、レスポンスボディの中身が一致しているかどうかのテストなども行っているので、それなりに時間がかかるといえばかかるようになっています。

    TestCaseのコンストラクタは、含まれるtestメソッド数分だけ呼び出される - Do You PHP はてブロ
    youhey
    youhey 2010/08/18
    TestCaseのコンストラクタ、setUp/tearDownメソッドのコスト
  • assertEqualsじゃなくてassertSameを使う - Do You PHP はてブロ

    最近填ったのが次のようなテスト。 <?php require_once 'PHPUnit/Framework.php'; class ATest extends PHPUnit_Framework_TestCase { public function testExecute() { $obj = $this->getMock('AnObject', array('execute')); $obj->expects($this->any()) ->method('execute') ->will($this->returnValue('1')); $this->assertEquals('00000001', $obj->execute()); } } AnObjectオブジェクトのexecuteメソッドを叩くと文字列の"1"が返されるのですが、実行するとテストにパスしてしまいます。 $ p

    assertEqualsじゃなくてassertSameを使う - Do You PHP はてブロ
  • 一部のメソッドだけテストを実行する - Do You PHP はてブロ

    Hideyuki SHIMOOKA on Twitter: "@twk filterオプションとか?"でもレスしてますが。 phpunit ってテストクラス内の一つのメソッドだけテストすることできる ? PHPUnit3.3.17での話ですが、filterオプションが使えます。filterオプションには実行したいテストメソッド名を正規表現で指定できます。以下の場合、 testGetDetailPc testGetDetailWithInvalidParameterPc とかだけテストが実行されます。 $ phpunit /path/to/test/AClassTest.php PHPUnit 3.3.17 by Sebastian Bergmann. ..... Time: 0 seconds OK (5 tests, 18 assertions) $ $ phpunit --filter

    一部のメソッドだけテストを実行する - Do You PHP はてブロ
  • PHPUnit 3.4 Japanese Manual

    Welcome to PHPUnit! PHPUnit is a programmer-oriented testing framework for PHP. It is an instance of the xUnit architecture for unit testing frameworks.

    PHPUnit 3.4 Japanese Manual
    youhey
    youhey 2009/06/08
    日本語版PHPUnit3.3のマニュアル
  • 1