3

require_once 呼び出しのパスを形成するために使用される prepend ファイルにグローバルを設定します。例えば:

require_once($GLOBALS['root'].'/library/particleboard/JsonUtil.php');

問題は、PHPUnit のスケルトン テスト ビルダーを実行すると、プリペンド ファイルが実行されないため、グローバルが設定されないことです。私が走るとき

cd /company/trunk/queue/process; phpunit --skeleton-test QueueProcessView

PHPUnit は QueueProcessView で require_once を解決しようとしますが、$GLOBALS['root'] が設定されていないため、必要なファイルを含めるときに致命的なエラーが発生します。

たとえば、PHPUnit に対して、

require_once(/code/trunk/library/particleboard/JsonUtil.php)

として解決されます

require_once(/library/particleboard/JsonUtil.php)

ルートがないことに注意してください。

スケルトン テスト コードに、実行前に PHP ファイルを呼び出す方法があるかどうかは誰にもわかりませんか? これで、このファイルに GLOBAL['root'] を設定できました。

他の創造的な解決策をいただければ幸いです。

4

2 に答える 2

2

通常のテストスイートをブートストラップできるのと同じように、スケルトンの生成についてもほとんど同じことができます。

phpunit --bootstrap prepend.php --skeleton-test QueueProcessView

私はこれを3つのファイルでテストしました:

test.php:

<?php   
require_once($GLOBALS['root'].'/confirmedToRun.php');
class test
{
   function doStuff()
   {
   }
}

prepend.php:

<?php   
$root = "/tmp/";

確認済みToRun.php:

<?php   
echo __FILE__;

phpunit --bootstrap prepend.php --skeleton-test testスケルトンクラスtestTest.phpを生成するために実行すると、ファイルも実行されますconfirmedToRun.php

phpunit --bootstrap prepend.php --skeleton-test test
PHPUnit 3.4.2 by Sebastian Bergmann.

/tmp/confirmedToRun.php
Wrote skeleton for "testTest" to "/home/me/tmp/testTest.php".
于 2010-05-03T21:49:31.747 に答える