我可以從代碼覆蓋中排除「require_once」語句嗎?與「require_once」該行報告沒有涉及,但它是不可能的,如果其他行的腳本覆蓋:「require_once」語句的PHPUnit代碼覆蓋
PHP 7.0.11,PHPUnit的5.5.7 &的XDebug 2.4.0使用代碼覆蓋。
我可以從代碼覆蓋中排除「require_once」語句嗎?與「require_once」該行報告沒有涉及,但它是不可能的,如果其他行的腳本覆蓋:「require_once」語句的PHPUnit代碼覆蓋
PHP 7.0.11,PHPUnit的5.5.7 &的XDebug 2.4.0使用代碼覆蓋。
在PHPUnit documentation中提到了使用@codeCoverageIgnoreStart
/@codeCoverageIgnoreEnd
/@codeCoverageIgnore
評論排除覆蓋範圍的代碼塊。
所以,你可以嘗試這樣的:
// @codeCoverageIgnoreStart
require_once __DIR__ . '/Data/TData.php';
require_once __DIR__ . '/Data/Path.php';
// @codeCoverageIgnoreEnd
或
require_once __DIR__ . '/Data/TData.php'; // @codeCoverageIgnore
require_once __DIR__ . '/Data/Path.php'; // @codeCoverageIgnore
forceCoversAnnotation
代碼覆蓋率將只被記錄爲使用
@covers
註釋中the section called "@covers
"記錄的試驗結果。
禁用forceCoversAnnotation
會產生require_once
電話覆蓋。如果你想使用@covers
註解,那麼你將需要禁用checkForUnintentionallyCoveredCode
或@codeCoverageIgnore*
註釋包裹require_once
電話
<?xml version="1.0" encoding="UTF-8"?>
<phpunit forceCoversAnnotation="false">
...
:
例如,您可以將phpunit.xml
配置文件中禁用forceCoversAnnotation
。
要麼
<?xml version="1.0" encoding="UTF-8"?>
<phpunit forceCoversAnnotation="true"
checkForUnintentionallyCoveredCode="false">
...
或者
// @codeCoverageIgnoreStart
require_once __DIR__ . '/Data/TData.php';
require_once __DIR__ . '/Data/Path.php';
// @codeCoverageIgnoreEnd
究其原因,是使用forceCoversAnnotation
意味着你要指定明確覆蓋了一切。您可以通過使用@covers
註釋來完成此操作。 @uses
註釋讓我們指定有意覆蓋測試的代碼。但@uses
不能用於指定導致副作用的代碼,例如require_once
聲明。這是@codeCoverageIgnoreStart
和@codeCoverageIgnoreEnd
的地方,它允許您明確指定覆蓋率應該忽略的代碼。
大多數這些註釋都是關於嚴格的代碼覆蓋率。