2017-06-18 35 views
1

我有PHP v7.0.15 PHPUnit v6.0.7。單獨運行命令phpunit就可以運行我所有的測試。PHPUnit代碼覆蓋會話已經開始

現在我想了解代碼覆蓋的信息,所以我創建了一個名爲phpcoverage的目錄,並運行命令phpunit --coverage-html phpcoverage。此輸出錯誤:

session_start(): Cannot send session cookie - headers already sent by (output started at phar:///usr/local/bin/phpunit/phpunit/Util/Printer.php:114)

我在另一個答案,我應該在我的測試中調用@session_start()讀,所以我補充說,由於第一線,現在得到的錯誤:

A session had already been started - ignoring session_start()

我的phpunit.xml文件看起來像這樣:

<phpunit bootstrap="public_html/app/vendor/autoload.php" 
    colors="true" 
    convertErrorsToExceptions="true" 
    convertNoticesToExceptions="true" 
    convertWarningsToExceptions="true" 
    processIsolation="false" 
    stopOnFailure="false" 
    syntaxCheck="true"> 

    <testsuites> 
     <testsuite name="App Tests"> 
      <directory>tests</directory> 
     </testsuite> 
    </testsuites> 

    <filter> 
    <whitelist processUncoveredFilesFromWhitelist="true"> 
     <directory suffix=".php">public_html/app/library</directory> 
    </whitelist> 
    </filter> 
</phpunit> 

任何幫助表示讚賞。

+0

如果您可以鏈接另一個建議如此以用於交叉引用的答案,那就太好了。 – hakre

回答

0

你的session_start()在代碼的一個頁面中多次調用。您可以在測試用例中的session_start()之前檢查會話狀態。參考Check if PHP session has already started

if (session_status() == PHP_SESSION_NONE) { 
    session_start(); 
}