ユニットテスト用の設定

ユニットテストが外部のサービス (データベースや LDAP サーバ、あるいは企業のウェブサービスなど) に依存することもしばしばあります。 これらのサービスにアクセスするには認証情報が必要となります。 ユーザ名とパスワードの組み合わせや API キーなどです。

こういった機密情報は一般に公開するものではありませんし、 ユニットテスト内にそんな情報を含めてはいけません。 そのかわりに、設定ファイルのテンプレートである config.php.dist を同梱するようにしましょう。 テストを実行するユーザは、このファイルのコピーを作成して config.php という名前で保存し、内容を調整します。

ディレクトリ構成の例


tests/
    config.php.dist
    config.php
 

設定テンプレートの例

<?php
$GLOBALS
['My_Package_UnittestConfig'] = array(
    
'host'     => 'FIXME',
    
'username' => 'FIXME',
    
'password' => 'FIXME',
    
'host'     => 'FIXME',
);
?>

設定ファイルが見つからない場合でも、die() するのではなくユニットテストを続行させなければなりません。 これは、複数のパッケージをまとめて一度にテストする際などに重要となります。

設定ファイルが存在するかどうかは、まず最初にチェックしなければなりません。

設定ファイルが存在するかどうかのチェック

<?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.');
        }
        
//...
    
}

    
//...
}
?>
リリースノートに必要な情報 (Previous) PEAR Installer: Core components (Installer API, error handling) (Next)
Last updated: Tue, 22 Apr 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

There are no user contributed notes for this page.