34

現在、PHP拡張機能との対話を正しく機能させるためにレガシーコードで回避する必要があるという問題があります(シングルトンテストの質問)。

そのため、アプリケーションで通常の本番コードを実行するときに、このコードを実行したくありません。したがって、実行中のコードがテストの一部として実行されているかどうかを通常のPHPコードでチェックインする必要があります。

これを決定する方法について何か提案はありますか?テストファイル自体の存在に関連付けられた定義済み変数について考えました(テストは顧客に出荷しません)が、開発者は拡張機能が正常に機能する必要があり、CIサーバーはテストを実行する必要があります。

PHPUnit.xmlファイルのグローバルセットをお勧めしますか?他の考え?

4

5 に答える 5

28

PHPUnitbootstrap.phpファイルで定数を定義します。これは、テストをロードまたは実行する前に実行されます。これは、アプリケーションを通常どおり実行している開発者には影響しません。単体テストだけです。

于 2012-04-20T21:27:09.657 に答える
10

さまざまな方法を確認でき$argvます。

if(PHP_SAPI == 'cli') {

    if(strpos($_SERVER['argv'][0], 'phpunit') !== FALSE) { ... }
    // or
    if($_SERVER['argv'][0] == '/usr/bin/phpunit') { ... }

}
于 2013-12-20T22:48:46.960 に答える