WinRoadのLaravel4初心者講座

次世代PHPフレームワークのLaravel4を初心者向けに解説して参ります。

Winroad徒然草の管理人がお届けします
初めてのPHPUnit

初めてのPHPUnit

このエントリーをはてなブックマークに追加

Laravelは、最初からルートフォルダにphpunit.xmlファイルが用意されていて、PHPUnitを使用してユニットテストすることを考慮していますが、PHPUnitの取り込みはユーザーに一任しています。

また、PHPUnitに関しては、SymfonyのHttpKernel、DomCrawler、BrowserKitコンポーネントを用意しています。

それでは、前回ComposerでインストールしたPHPUnitで初めてのユニットテストを行ってみたいと思います。

テスト定義と実行

Laravelには、app/tests内に、デフォルトで、2つのファイルが作成されています。

  1. TestCase.php
  2. ExampleTest.php

テストケースを作成するには、app/testsフォルダ内に作成して、PHPUnit_Framework_TestCaseを拡張します。

assertTrueメソッド

PracticeTest.phpを作成し、下記のように記述します。

app/tests/PracticeTest.php
<?php
 class PracticeTest extends PHPUnit_Framework_TestCase{
 public function testHelloWorld(){
 $greeting='Hello,World!';
 $this->assertTrue($greeting === 'Hello,World!');
 }
 }
  • 5行目:assertTrueメソッドは、第1引数が真であることをアサート(断言)します。第2引数はオプションで、メッセージを指定します。この反対で、assertFalseメソッドは、偽であることをアサートします。

次に、コマンドプロンプトを起動したら、下記のように記述します。アプリケーションフォルダまで移動してから、phpunitを実行します。

cd c:\xampp\htdocs\laravel\app
phpunit tests

下記のようになりました。デフォルトのExampleTestにエラーが表示されました。

laravel022

PHPUnit 3.7.21 by Sebastian Bergmann.

F.

Time: 0 seconds, Memory:6.25Mb

Thre was 1 failure:

1) ExampleTest::testBasicExample
Failed asserting that actual size 0 mathces excepted size 1.

C:\xampp\htdocs\laravel\app\tests\ExampleTest.php:16

FAILURES!
Tests:2, Assertions: 3, Failures: 1.
  • 1行目:PHPUnitのバージョンと作者名が表示されています。
  • 3行目:Fがエラー、ドット(.)が成功を表示しています。この場合、一つ目が失敗で、2つめが成功を表します。
  • 5行目:処理時間と使用メモリを表示しています。
  • 7行目:テスト失敗が1つあることを表示しています。
  • 9-10行目:テスト失敗の箇所と失敗の理由が表示されています。「期待されたサイズは1なのに、実際のサイズは0でした」みたいな意味でしょうか。
  • 12行目:テスト失敗のファイル名と該当行数が表示されています。
  • 15行目:2つのテスト、3つのアサーション(表明、主張)、1つの失敗が表示されています。

まだ、エラーの理由がわかりませんので、これに関しては、後日検証しますが、今回作成した、PrecticeTest.phpは、テストOKでした。

assertEqualsメソッド

assertEqualsメソッドは、第1引数に期待されている値、第2引数に実際の値、第3引数にオプションでメッセージを指定します。

それでは、下記のコードを追加します。

public function testEqualHelloWorld(){
 $greeting='Hello,World!'; 
 $this->assertEquals('Hello,World!',$greeting);
 }
  • 3行目:第1引数の値と第2引数の値が同じですので、エラーは表示されません。

その他のアサーション

  • assertSame
  • assertContains
  • assertArrayHasKey
  • assertInternalType
  • assertInstanceOf
  • Asserting Exceptions

« »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です