PHPUnit結合SonarQube的使用筆記

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

相關文章
相關標籤/搜索