ユニットテストが外部のサービス (データベースや LDAP
サーバ、あるいは企業のウェブサービスなど)
に依存することもしばしばあります。
これらのサービスにアクセスするには認証情報が必要となります。
ユーザ名とパスワードの組み合わせや API キーなどです。
こういった機密情報は一般に公開するものではありませんし、
ユニットテスト内にそんな情報を含めてはいけません。
そのかわりに、設定ファイルのテンプレートである
config.php.dist を同梱するようにしましょう。
テストを実行するユーザは、このファイルのコピーを作成して
config.php という名前で保存し、内容を調整します。
例 24-5設定テンプレートの例 $GLOBALS['My_Package_UnittestConfig'] = array(
'host' => 'FIXME',
'username' => 'FIXME',
'password' => 'FIXME',
'host' => 'FIXME',
); |
|
設定ファイルが見つからない場合でも、die()
するのではなくユニットテストを続行させなければなりません。
これは、複数のパッケージをまとめて一度にテストする際などに重要となります。
設定ファイルが存在するかどうかは、まず最初にチェックしなければなりません。
例 24-6設定ファイルが存在するかどうかのチェック <?php
//...
class My_Package_ClassTest extends PHPUnit_Framework_TestCase
{
protected $configExists = null;
//...
public function __construct($name = null)
{
parent::__construct($name);
$configFile = dirname(__FILE__) . '/config.php';
$this->configExists = file_exists($configFile);
if ($this->configExists) {
include_once $configFile;
}
}
//...
public function setUp()
{
if (!$this->configExists) {
$this->markTestSkipped('Unit test configuration is missing.');
}
//...
}
//...
}
?> |
|