Functionalテスト や
Unitテスト の数が多くなると、それらを1つ1つ実行するのが面倒になってしまいます。そこで、スイートを作成すると複数のテストを1つとして実行することができるようになります。
例えば Foo, Bar, Baz というUnitテストをまとめるスイートは、下記のようにして作成します。
tests/unit/MySuite.php
class Unit_MySuite extends Sabel_Test_UnitSuite
{
public static function suite()
{
$suite = new self();
$suite->add("Foo");
$suite->add("Bar");
$suite->add("Baz");
return $suite;
}
}
実行も通常のテストと同様に行うことができます。テスト名にスイート名を指定してください。
$ sakle UnitTest MySuite
Functionalテストでも同じようにスイートを作成することができます。また、グループ化できるようなテストはディレクトリで分けたくなるかもしれません。例えばIndexモジュールのコントローラ群のテストはindexディレクトリに格納するといったことです。
Indexモジュールには Index, Login, Register の3つのコントローラがある場合、それらのテストは下記のように設置することが可能です。
-
tests/functional/index/Index.php
クラス名: Functional_Index_Index
-
tests/functional/index/Login.php
クラス名: Functional_Index_Login
-
tests/functional/index/Register.php
クラス名: Functional_Index_Register
そして、スイートを次のように作成します。
tests/functional/index/IndexModule.php
class Functional_Index_IndexModule extends Sabel_Test_FunctionalSuite
{
public static function suite()
{
$suite = new self();
$suite->add("Index_Index");
$suite->add("Index_Login");
$suite->add("Index_Register");
return $suite;
}
}
テストの実行は下記のようになります。
$ sakle Functional Index_IndexModule
このようにすることでテストをグループ化した上で、それらグループをディレクトリで表すことも可能になります。
ディレクトリを作成しそこにテストファイルを設置するのはUnitテストでも同じように可能です。
例えばページ上部のテスト Foo をhogeディレクトリに格納し、
tests/unit/hoge/Foo.php
class Unit_Hoge_Foo extends Sabel_Test_TestCase
{
...
}
スイートへの追加を下記のように変更すればOKです。
tests/unit/MySuite.php
class Unit_MySuite extends Sabel_Test_UnitSuite
{
public static function suite()
{
...
$suite->add("Hoge_Foo");
...
}
}
スイートにはスイートを追加することも可能です。例えば下記のように AllSuiteテスト を作成し、そこに上記 MySuite を追加することができます。
tests/unit/AllSuite.php
class Unit_AllSuite extends Sabel_Test_UnitSuite
{
public static function suite()
{
$suite = new self();
...
$suite->add("MySuite");
...
return $suite;
}
}