Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
MyDoctrineTester
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
bootstrap
functional/front
unit/model
README.md

README.md

使い方


Unit Test

テストクラス

$cat unit/model/SampleTest.php
<?php

// MyDoctrineTester.class.phpをincludeする。
include(dirname(__FILE__).'/../../bootstrap/MyDoctrineTester.class.php');

// MyDoctrineTesterを継承する
class MyTester extends MyDoctrineTester
{

    /**
     * テストを書く メソッド名が『/^.*Test\d*$/』となるものがテスト実行の対象
     */

    public function FooTest($t)
    {
        $t->pass('FooTest passes.');
    }
    
    public function FooTest00($t)
    {
        $t->pass('FooTest00 passes.');
    }
    
    public function FooTest01($t)
    {
        $t->pass('FooTest01 passes.');
    }
    
    public function BarTest($t)
    {
        $t->pass('BarTest passes.');
    }
    
    public function BarTest00($t)
    {
        $t->pass('BarTest00 passes.');
    }
    
    public function BarTest01($t)
    {
        $t->pass('BarTest01 passes.');
    }
}

// アプリ名を指定してテストクラスのインスタンスを取得
$myTester = new MyTester('front');

// lime_testのインスタンスとコマンドライン引数を指定して、テストを実行する
$myTester->run(new lime_test(), $argv);

実行

そのまま実行すると全てのテストを実行する。

$php unit/model/SampleTest.php
# FooTest() test
ok 1 - FooTest passes.
# FooTest00() test
ok 2 - FooTest00 passes.
# FooTest01() test
ok 3 - FooTest01 passes.
# BarTest() test
ok 4 - BarTest passes.
# BarTest00() test
ok 5 - BarTest00 passes.
# BarTest01() test
ok 6 - BarTest01 passes.
1..6
# Looks like everything went fine. 

引数を指定する事で、前方一致でヒットするテストのみ実行することが出来ます。

$php unit/model/SampleTest.php Foo
# FooTest() test
ok 1 - FooTest passes.
# FooTest00() test
ok 2 - FooTest00 passes.
# FooTest01() test
ok 3 - FooTest01 passes.
1..3
# Looks like everything went fine. 

ただし、テスト対象を /^引数.Test\d*/ としているので、SampleTestのテストをするつもりで『SampleT』『SampleTest』などを指定するとテスト対象を探せません。

$php unit/model/SampleTest.php FooT
# Looks like everything went fine. 
$php unit/model/SampleTest.php FooTest
# Looks like everything went fine. 

数字まで指定(/^引数.+Test\d+$/に一致)すると完全一致でヒットするものだけをテストします

php unit/model/SampleTest.php FooTest00
# FooTest00() test
ok 1 - FooTest00 passes.
1..1
# Looks like everything went fine. 

Functional Test

テストクラス

$cat functional/front/SampleActionsTest.php
<?php

// functional.phpのincludeを忘れない
include(dirname(__FILE__).'/../../bootstrap/functional.php');
// MyDoctrineTester.class.phpをincludeする。
include(dirname(__FILE__).'/../../bootstrap/MyDoctrineTester.class.php');

class MyTester extends MyDoctrineTester
{

    /**
     * テストを書く 命名規則等UnitTestと同じ。
     */

    public function FooTest($b)
    {
        $b->test()->pass('FooTest passes.');
    }
    
    public function FooTest00($b)
    {
        $b->test()->pass('FooTest00 passes.');
    }
    
    public function FooTest01($b)
    {
        $b->test()->pass('FooTest01 passes.');
    }

    public function BarTest($b)
    {
        $b->test()->pass('BarTest passes.');
    }
    
    public function BarTest00($b)
    {
        $b->test()->pass('BarTest00 passes.');
    }
    
    public function BarTest01($b)
    {
        $b->test()->pass('BarTest01 passes.');
    }
}

// アプリ名を指定してテストクラスのインスタンスを取得
$myTester = new MyTester('front');

// sfTestFunctionalのインスタンスと、コマンドライン引数を指定して、テストを実行する
$myTester->run(new sfTestFunctional(new sfBrowser()), $argv);

実行

Unit Test を参照 Unit Test と同じ。

その他

MyDoctrineTesterはsymfonyのテストを想定しています。以下のようにしてsymfonyのテストを実行することが出来ます。

$./symfony tset:unit
$./symfony test:functional front
Something went wrong with that request. Please try again.