前提: 1,SonarQube已经安装好且已经安装了sonar-php-plugin,而且在测试服务器上也安装并配置好了sonar-scanner 2,安装了phpunit5.3版本 先安装Composer,直接从官网下载composer.phar文件,而后同目录创建一个composer.cmd文件,内容以下php
@php "%~dp0composer.phar" %*
在linux下直接把composer.phar直接放入bin目录,而且更名为composer便可linux
mv composer.phar composer chmod a+x composer
这时候,就能够执行composer命令了。 而后创建一个文件composer.json, 内容以下:
{ "require-dev": { "phpunit/phpunit": "5.3.*" } }
经过执行composer install来安装phpunit,它会自动安装phpunit和它依赖的各类组件 而后把D:\Program Files (x86)\php-5.6.9\vendor\bin配置到PATH路径中便可
测试步骤: 1,创建一个顶级目录projectA, 2,在该顶级目录下创建两个目录src和tests,分别用于放置业务代码文件和测试代码文件 3,在该顶级目录下创建一个配置文件sonar-project.properties,内容以下:json
sonar.projectKey=org.sonarqube:php-ut-sq-scanner sonar.projectName=PHP :: PHPUnit :: SonarQube Scanner sonar.projectVersion=1.0 sonar.sources=src sonar.tests=tests sonar.language=php sonar.sourceEncoding=UTF-8 # Reusing PHPUnit reports sonar.php.coverage.reportPath=reports/phpunit.coverage.xml sonar.php.tests.reportPath=reports/phpunit.xml
sonar.sources和sonar.tests必须配置,但能够设置为空,由于咱们这里只是把分析报告上传便可,不须要再执行覆盖率检查了。服务器
4,在src下面编写业务类代码 5,在tests下面编写测试类代码 6,在顶级目录下执行cookie
phpunitcomposer
这时候就会在顶级目录下获得一个文件夹reports,里面有两个测试报文文件,分别是测试报告和测试覆盖率报告post
但须要在顶级目录下有一个phpunit.xml文件单元测试
<?xml version="1.0" encoding="UTF-8"?> <phpunit cacheTokens="false" colors="false" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" forceCoversAnnotation="false" mapTestClassNameToCoveredClassName="false" printerClass="PHPUnit_TextUI_ResultPrinter" processIsolation="false" stopOnError="false" stopOnFailure="false" stopOnIncomplete="false" stopOnSkipped="false" stopOnRisky="false" testSuiteLoaderClass="PHPUnit_Runner_StandardTestSuiteLoader" timeoutForSmallTests="1" timeoutForMediumTests="10" timeoutForLargeTests="60" verbose="false"> <!-- Here you can define many 'testsuite' elements --> <testsuites> <testsuite name="onetestsuite"> <directory suffix=".php">tests</directory> </testsuite> </testsuites> <!-- 代码覆盖率 --> <filter> <whitelist addUncoveredFilesFromWhitelist="true"> <directory suffix="Test.php">src</directory> </whitelist> </filter> <!--代码覆盖率报告和单元测试报告--> <logging> <log type="coverage-clover" target="reports/phpunit.coverage.xml"/> <log type="junit" target="reports/phpunit.xml" logIncompleteSkipped="false"/> </logging> <!--Set environment variables--> <php> <includePath>.</includePath> <ini name="foo" value="bar"/> <const name="foo" value="bar"/> <var name="foo" value="bar"/> <env name="foo" value="bar"/> <post name="foo" value="bar"/> <get name="foo" value="bar"/> <cookie name="foo" value="bar"/> <server name="foo" value="bar"/> <files name="foo" value="bar"/> <request name="foo" value="bar"/> </php> </phpunit>
7,在顶级目录下执行如下命令,就会将两个测试报告文件和src和tests目录下的文件都提交给SonarQube服务器(前提是Sonar已经都配置好了) (D:\sonar-scanner-2.6.1\bin\sonar-scanner.bat这个路径或者在linux就放入PATH环境变量中)测试
sonar-scanner
重复步骤4~7,就会更新SonarQube端的报告数据。ui