11

最初に PHPUnit テストを実行し、テストが失敗した場合は停止する PHP デプロイ スクリプトがあります。私はこれを何度もグーグルで調べてきましたが、コマンドラインツールからではなく、php からの単体テストの実行に関するドキュメントを見つけるのは非常に困難です。

PHPUnitの最新バージョンの場合、次のようなことができますか:

$unit_tests = new PHPUnit('my_tests_dir');
$passed = $unit_tests->run();

各テスト スイートを手動で指定する必要のないソリューションが望ましいです。

4

5 に答える 5

8

理解した:

$phpunit = new PHPUnit_TextUI_TestRunner;

try {
    $test_results = $phpunit->dorun($phpunit->getTest(__DIR__, '', 'Test.php'));
} catch (PHPUnit_Framework_Exception $e) {
    print $e->getMessage() . "\n";
    die ("Unit tests failed.");
}
于 2013-03-14T05:13:02.603 に答える
6

これを行う最も簡単な方法は、クラスPHPUnit_TextUI_Commandのオブジェクトをインスタンス化することです。

だからここに例があります:

require '/usr/share/php/PHPUnit/Autoload.php';

function dummy($input)
{
   return '';
}

//Prevent PHPUnit from outputing anything
ob_start('dummy');

//Run PHPUnit and log results to results.xml in junit format
$command = new PHPUnit_TextUI_Command;
$command->run(array('phpunit', '--log-junit', 'results.xml', 'PHPUnitTest.php'),
              true);

ob_end_clean();

このようにして、結果は解析可能なjunit形式でresults.xmlファイルに記録されます。別の形式が必要な場合は、ドキュメントを確認してください。また、runメソッドに渡される配列を変更することで、さらにオプションを追加できます。

于 2013-03-09T15:08:33.193 に答える