我在一个有多个Class和方法的项目上工作,我想使用 PhpUnit 来测试每个案例,并防止出现名为 Jenkins 的工具的问题。 (服务器监控)
此工具的目的是查看代码覆盖率。我可以看到PhpUnit在测试套件中去了哪里。
但我不认为CodeCoverage 在我的类和方法中无处不在。
示例:
Class Class1Test {
Public method1 ( $inputs ) {
$var = Class3::setVar();
Return Class2 :: Method1 ( $inputs, $var ) ;
}
}
Class Class2 {
Public static method2 ( $inputs, $var ) {
Echo ‘’ hi there ! $inputs ‘’ ;
}
}
所以当我用PhpUnit进行测试时:
Class Test extends PhpUnit… {
…
testmethod2( ) {
$this->assertNotEmpty( $inputs ) ;
}
}
codeCoverage 不包括我在CodeCoverage中的Class2:Method1。 当然,这是一个小例子,在我的项目中,我得到了更多的类和方法的重叠,CodeCoverage只覆盖了测试文件中调用的类和方法。
有没有办法通过一次测试来考虑我的所有方法?
非常感谢你糊状的帮助。
编辑***
这是我的phpunit.xml:
<phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/3.7/phpunit.xsd"
backupGlobals="false"
backupStaticAttributes="false"
bootstrap="src/TJS/bootstrap.php"
cacheTokens="true"
colors="true"
convertErrorsToExceptions="true"
convertWarningsToExceptions="true"
convertNoticesToExceptions="false"
forceCoversAnnotation="false"
mapTestClassNameToCoveredClassName="false"
printerClass="PHPUnit_TextUI_ResultPrinter"
processIsolation="false"
stopOnError="false"
stopOnFailure="false"
stopOnIncomplete="false"
stopOnSkipped="false"
strict="false"
verbose="true"
checkForUnintentionallyCoveredCode="false"
>
<testsuites>
<testsuite name="TJS">
<directory suffix="Test.php">src/TJS/_tests_unit/classes/</directory>
<!--<directory suffix="Test.php">tests/integration/</directory>-->
</testsuite>
</testsuites>
<filter>
<whitelist addUncoveredFilesFromWhitelist="true">
<directory suffix=".php">src/TJS/classes</directory>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="build/coverage"/>
<log type="coverage-crap4j" target="build/logs/crap4j.xml"/>
<log type="coverage-clover" target="build/logs/clover.xml"/>
<log type="junit" target="build/logs/junit.xml" logIncompleteSkipped="false" />
</logging>
</phpunit>
答案 0 :(得分:1)
您没有调用这些方法,因此没有覆盖范围。 但我想我知道你的意思。默认情况下,代码覆盖率报告不包含任何没有执行的类,因此您不会在覆盖率报告中显示它们,并且您的覆盖率百分比似乎更高。要修复此问题,请在phpunit.xml中添加
<filter>
<whitelist addUncoveredFilesFromWhitelist="true">
<directory suffix=".php">../app</directory>
</whitelist>
</filter>
(这假设您的应用程序位于./app并且您的phpunit.xml位于./tests中)