テスト実行時にフィクスチャを実行する | Test

テスト(スイートも含む)の際に、アノテーションで指定されたフィクスチャを実行させることができます。
※フィクスチャに関する詳細はこちらを参照してください。
/**
 * @fixture MyFixture1 MyFixture2
 */
class Unit_MyTest extends Sabel_Test_TestCase
{
  public function testOne()
  {
    ...
  }
  
  public function testTwo()
  {
    ...
  }
}
上記の場合、下記の順番で処理が行われます。
  1. Fixture_MyFixture1::upFixture()
  2. Fixture_MyFixture2::upFixture()
  3. Unit_MyTest::testOne()
  4. Unit_MyTest::testTwo()
  5. Fixture_MyFixture2::downFixture()
  6. Fixture_MyFixture1::downFixture()

もしテストメソッドごとにフィクスチャを実行したい場合は setUp(), tearDown() を利用し下記のようにすることができます。
class Unit_Test extends Sabel_Test_TestCase
{
  protected static $myFixture1 = null;
  protected static $myFixture2 = null;
  
  public static function setUpBeforeClass()
  {
    self::$myFixture1 = new Fixture_MyFixture1();
    self::$myFixture2 = new Fixture_MyFixture2();
  }
  
  public function setUp()
  {
    self::$myFixture1->upFixture();
    self::$myFixture2->upFixture();
  }
  
  public function tearDown()
  {
    self::$myFixture2->downFixture();
    self::$myFixture1->downFixture();
  }
  
  ...
  
}
  1. Fixture_MyFixture1::upFixture()
  2. Fixture_MyFixture2::upFixture()
  3. Unit_MyTest::testOne()
  4. Fixture_MyFixture2::downFixture()
  5. Fixture_MyFixture1::downFixture()
  6. Fixture_MyFixture1::upFixture()
  7. Fixture_MyFixture2::upFixture()
  8. Unit_MyTest::testTwo()
  9. Fixture_MyFixture2::downFixture()
  10. Fixture_MyFixture1::downFixture()

スイートにアノテーションでフィクスチャを設定した場合、グループ化されたテスト群の前後でフィクスチャが実行されます。
/**
 * @fixture SuiteFixture1 SuiteFixture2
 */
class Unit_MySuite extends Sabel_Test_UnitSuite
{
  public static function suite()
  {
    $suite = new self();
    $suite->add("Foo");
    $suite->add("Bar");
    
    return $suite;
  }
}
/**
 * @fixture MyFixture1 MyFixture2
 */
class Unit_Foo extends Sabel_Test_TestCase
{
  public function testOne()
  {
    ...
  }
  
  public function testTwo()
  {
    ...
  }
}
/**
 * @fixture MyFixture1 MyFixture2
 */
class Unit_Bar extends Sabel_Test_TestCase
{
  public function testOne()
  {
    ...
  }
  
  public function testTwo()
  {
    ...
  }
}
  1. Fixture_SuiteFixture1::upFixture()
  2. Fixture_SuiteFixture2::upFixture()
  3. Fixture_MyFixture1::upFixture()
  4. Fixture_MyFixture2::upFixture()
  5. Unit_Foo::testOne()
  6. Unit_Foo::testTwo()
  7. Fixture_MyFixture2::downFixture()
  8. Fixture_MyFixture1::downFixture()
  9. Fixture_MyFixture1::upFixture()
  10. Fixture_MyFixture2::upFixture()
  11. Unit_Bar::testOne()
  12. Unit_Bar::testTwo()
  13. Fixture_MyFixture2::downFixture()
  14. Fixture_MyFixture1::downFixture()
  15. Fixture_SuiteFixture2::downFixture()
  16. Fixture_SuiteFixture1::downFixture()

関連項目