2016-07-15 40 views
2

私はサイトに対していくつかのテストを実装しています。特定のテストで は、この結果が発生しました:phpunit - 危険なテストについてのヘルプ

{ 
"event": "test", 
"suite": "Example_V_test", 
"test": "Example_V_test::test_3", 
"status": "error", 
"time": 13.469105958939, 
"trace": [ 
    { 
     "file": "\/opt\/lampp\/htdocs\/buy\/application\/tests\/phpunit.phar", 
     "line": 569, 
     "function": "main", 
     "class": "PHPUnit_TextUI_Command", 
     "type": "::" 
    } 
], 
"message": "Risky Test: Test code or tested code did not (only) close its own output buffers", 
"output": "" 
}R                 3/3 (100%) 

Time: 25.76 seconds, Memory: 59.25MB 

There was 1 risky test: 

1) Example_V_test::test_3 
Test code or tested code did not (only) close its own output buffers 

/opt/lampp/htdocs/buy/application/tests/phpunit.phar:569 

OK, but incomplete, skipped, or risky tests! 

を私の質問はこれです:この「問題」を引き起こしたコードの行を見つける方法?

+0

後@stop書くビュー@stopフラグを使用して、この同じ問題を解決しました。 –

+0

どこでエラーログを見つけることができますか?私はcodeigniterで構築されたサイトをテストしていますが、phpunit.pharファイルを含むディレクトリ、つまり:/opt/lampp/htdocs/codeigniter/application/testsには見つかりませんでした。また、私はcodeigniter/application/logフォルダを見ており、ここではphpunitのテストからの出力は表示されません。 – bobc82

+0

/var/log/apache2/error_log。試してみてください。 xD –

答えて

5

PHPUnitが、テストメソッドの最後の出力バッファリングレベルが最初のレベルと異なることを検出すると、メッセージが報告されます。これは、独自の出力バッファを使用し、テストで出力が生成されないことをチェックするためです。

これを無視するオプションがPHPUnitにないため、コード内の出力バッファリングが開始されたが終了していない(または終了しすぎた)原因を突き止めて修正する必要があります。

出力バッファリングが開始されるヒントがないため、ソースコード(およびlibs)でフルテキスト検索を使用して候補を識別することができるため、これは実現するのが難しいかもしれません。次に、通常のプログラムフローを破る可能性のある例外を探して、ob_end_flush()(または類似のもの)を呼び出さないようにします。

+0

テスト済みコードの最後にob_get_level()の値をチェックして2を返します。次に調査しますこれに。あなたの答えをありがとう! – bobc82

1

私はちょうど私が

をテストしていたことだけでは、エラーログにそれを見つけることができますセクション

@section ('content') @ stop 
... 
@endsection 
関連する問題