我有PHP v7.0.15 PHPUnit v6.0.7。单独运行命令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 :(得分:0)
您在代码中的一个页面中多次调用session_start()。您可以在测试用例中的session_start()之前检查会话状态。请参阅Check if PHP session has already started
if (session_status() == PHP_SESSION_NONE) {
session_start();
}