web-dev-qa-db-ja.com

phpunitテストでエコー

私はphpunitテストでechoを試してきましたが、今のところ運がありません。

Xml構成ファイルに関するドキュメントを読みましたが、どうやらdebugパラメーターが私が探しているものです。残念ながら、それでも機能しません。とにかくここに私のxml設定ファイルがあります:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit colors="true"
         processIsolation="true"
         verbose="true"
         debug="true">
</phpunit> 

processIsolationverboseの両方が受け入れられますが、debugは受け入れられません。

このコマンドをphpunitに直接渡すと、実際にはかなりうまく機能します。

phpunit --debug MyTest.php # here stuff is echoed correctly

しかし、xml設定ファイルでは、無視されているように見えます。

14
nourdine

PHPUnitの現在のバージョン>3.6.4(およびすべての3.5.*バージョン)は、テストケースでechoしたものすべてを出力するだけです。

<?php

class OutputTestCase extends PHPUnit_Framework_TestCase {

    public function testEcho() {
        echo "Hi";
    }   
}

生成:

phpunit foo.php 
PHPUnit 3.6.7 by Sebastian Bergmann.

.Hi

Time: 0 seconds, Memory: 3.25Mb

OK (1 test, 0 assertions)

だからあなたが古い3.6バージョンはアップグレードするだけです:)

15
edorian

Exit()またはkill()を呼び出さないように注意してください。 PHPUnitはechoステートメントをバッファリングし、テスト中にスクリプトが終了すると、そのバッファは出力なしで失われます。

3
Michael Morris

processIsolationはテストの出力を抑制しているため、無効にする必要があります。 debugフラグとの相互作用は、おそらくこれで導入された見落としでした: https://github.com/sebastianbergmann/phpunit/pull/1489

1
Robotic-Brain

テストに時間がかかり、プロセス中に出力を確認したい場合は、次のメソッドをテストクラスに追加します。

_protected function prontoPrint($whatever = 'I am printed!')
{
    // if output buffer has not started yet
    if (ob_get_level() == 0) {
        // current buffer existence
        $hasBuffer = false;
        // start the buffer
        ob_start();
    } else {
        // current buffer existence
        $hasBuffer = true;
    }

    // echo to output
    echo $whatever;

    // flush current buffer to output stream
    ob_flush();
    flush();
    ob_end_flush();

    // if there were a buffer before this method was called
    //      in my version of PHPUNIT it has its own buffer running
    if ($hasBuffer) {
        // start the output buffer again
        ob_start();
    }
}
_

これで、テストクラス内で$this->prontoPrint($variable)を呼び出すと、すぐにコンソールにテキストが表示されます。私はこれを使用しました php.netコメント 関数を記述しました。

_PHPUnit 5.7.21_ _PHP 5.6.31 with Xdebug 2.5.5_

0
hpaknia