カスタムテスト実行順序でテストスイートをセットアップする方法について、PHPUnit マニュアルに従ってみました。スイートを機能させるには、これらの行といくつかのインクルードのみが必要であることに気付きました。
public static function suite()
{
$suite = new PHPUnit_Framework_TestSuite('Package');
return $suite;
}
しかし、上記の行を使用すると、テストの実行順序はインクルードの並べ替え順序によって定義されます。次のように suite() を介して変更しようとすると、テストは 2 回実行されます。最初は suite() で定義された並べ替え順序で実行され、その後はインクルードの並べ替え順序で実行されます。
public static function suite()
{
$suite = new PHPUnit_Framework_TestSuite('Package');
$suite->addTestSuite('Package_Class1Test');
$suite->addTestSuite('Package_Class2Test');
$suite->addTestSuite('Package_Class3Test');
return $suite;
}
インクルードは次の方法で行われます。
require_once 'Package/Class3Test.php';
require_once 'Package/Class2Test.php';
require_once 'Package/Class1Test.php';
結果 (テスト実行順序):
1) Class1Test
2) Class2Test
3) Class3Test
4) Class3Test
5) Class2Test
6) Class1Test
Netbeans 7.0beta を使用して、Windows 7 で PHP 5.3.5 / PHPUnit 3.5.11 を実行しています。phpunit のマニュアル (http://www.phpunit.de/manual/3.5/en/organizing-tests.html) を読みました。しかし、私は何が間違っているのか分かりません...
助けてください。
PS: この問題は、クラスを自動ロードすることで解決できます。