前提: 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