複数のテストをまとめて実行する | Test

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;
  }
}