2013-05-13 128 views
2

我試圖用Sonar獲得測試單元覆蓋率。要做到這一點,我按照下列步驟操作:如何使用Django,Jenkins和Sonar獲得測試覆蓋率?

  1. 生成報告與python manage.py jenkins --coverage-html-report=report_coverage
  2. 設置屬性在/sonar/sonar-3.5.1/conf/sonar.properties

sonar.dynamicAnalysis=reuseReports sonar.cobertura.reportPath=/var/lib/jenkins/workspace/origami/DEV/SRC/origami/reports/coverage.xml

當我啓動了測試,報告在正確的地方生成。但是,Sonar沒有檢測到單元測試。 我錯過了一步,或者一切都錯了嗎?

回答

2

我認爲問題是,似乎有聲納和詹金斯之間沒有聯繫。使用插件更容易。

安裝插件後,您只需在jenkins管理中添加構建步驟即可。

爲了在Sonar中查看覆蓋率報告,您應該使用「Jenkins Sonar Plugin」。然而,它會迫使你創建一個maven項目(和一個pom.xml),並且當你使用Django(它已經做了maven的工作),它可能不是你想要的。

我想你想要的是看到代碼覆蓋的地方,也許你應該把它集成在詹金斯而不是聲納。爲此,您可以使用兩個插件,「Jenkins Cobertura Plugin」和「HTML Publisher插件」。

Jenkins Cobertura Plugin將允許您以圖形方式查看coverage.xml中的代碼覆蓋率。您可以看到軟件包,文件,分類,行和條件覆蓋的百分比。您只需在項目管理中將您的coverage.xml鏈接添加到Jenkins中。更多詳情here

HTML發佈者插件]可能很有用,通過在html中發佈覆蓋率報告來查看詳細的代碼覆蓋率。

+0

好吧,這很醜,但我想我別無選擇。無論如何,無名小夥。 – fxm 2013-09-04 09:24:02

-1

我覺得有問題:

sonar.cobertura.reportPath=/var/lib/jenkins/workspace/origami/DEV/SRC/origami/reports/coverage.xml 

閱讀:link

+0

的路徑是correct.I已經檢查這個環節,它也不管用。 – fxm 2013-05-13 11:21:37

+0

你爲什麼寫絕對路徑? – plsgogame 2013-05-13 11:28:26

+0

不用擔心路徑。 – fxm 2013-05-13 14:32:57

0

關於Jenkins我發現coverage.xml的路徑相對於運行manage.py jenkins的目錄。

在我的情況下,我需要在與Jenkins不同的機器上運行單元測試。爲了讓聲納使用生成coverage.xml,對我來說,相對於項目作爲詹金斯的工作空間目錄的相同點在運行從文件夾中的測試中,它是必要的。

 
Say I have the following on Jenkins 
/local/jenkins/tmp/workspace/my_build 
    + my_project 
     + app1 
     + app2 
Say on test machine I have the following 
/local/test 
    + my_project 
     + app1 
     + app2 

我運行從/在測試機器上本地/測試單元測試。然後coverage.xml具有正確的相對路徑,它看起來像MY_PROJECT/APP1/source1.py或MY_PROJECT/APP 2/source2.py

相關問題