MyDoctrineTester
PHP
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
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 <span style="color: green;">FooTest</span><span style="color: red;">00</span>($t)
{
    $t->pass('FooTest00 passes.');
}

public function <span style="color: green;">FooTest</span><span style="color: red;">01</span>($t)
{
    $t->pass('FooTest01 passes.');
}

public function <span style="color: green;">BarTest</span>($t)
{
    $t->pass('BarTest passes.');
}

public function <span style="color: green;">BarTest</span><span style="color: red;">00</span>($t)
{
    $t->pass('BarTest00 passes.');
}

public function <span style="color: green;">BarTest</span><span style="color: red;">01</span>($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