2011-12-20 46 views
4

我目前正在幫助我的團隊成員掌握我們的新項目和我們正在使用的工具。我們使用Java作爲主要語言。我的同事的特殊之處在於他是盲人。他主要在Emacs工作,他在終端中運行Maven目標。盲人測試覆蓋率報告的可訪問性

當我完成實施後,我發現檢查我的測試覆蓋率非常有用。我希望我的同事也能夠檢查報道。我得到這個信息的方式有兩種:

  • 使用的IntelliJ集成測試覆蓋率(它使用EMMA和旁邊會顯示綠色,紅色或黃色,以每行)。非常方便,我可以在運行測試後馬上看到這些信息,不需要進一步的交互

    這對我的同事不起作用,因爲他不能使用IntelliJ,它可能無法工作,沒有覆蓋信息的文字表示

  • 使用Cobertura報告。他們使用相同的概念綠色/紅色線它們適用於宏觀信息,如類中的整體覆蓋,但不適用於檢查哪些線未被覆蓋。 事實上,他可以挖掘報告的HTML源代碼,找出哪一個有類nbHitsUncovered,但它似乎很不切實際。

我真的很想告訴他如何快速得到他的覆蓋率數據。有沒有人知道一個不依賴顏色而顯示覆蓋率的工具?或者我們必須寫我們自己的? (例如,通過轉換HTML報告)

+0

聲納可以顯示代碼覆蓋率,不知道它是否可以比cobertura報告更容易閱讀:http://www.sonarsource.org/sonar-to-manage-unit-tests-and-improve-code-覆蓋範圍/ – oers 2011-12-20 12:07:30

+0

@Antoine。我刪除了關於使用FitNesse的答案。對不起,我沒有回答你關於代碼覆蓋率的問題。 – Brad 2011-12-20 12:20:57

+0

@oers謝謝。我們已經在我們的項目中建立了Sonar。儘管我從不在本地運行,但我可以嘗試一下。 Sonar是我想要和我的同事一起提出的主題。 – Antoine 2011-12-20 12:30:10

回答

5

我是一個完全盲目的開發者,他在Windows上使用Jaws for Windows屏幕閱讀器完成我的工作,所以這不會完全映射到與您一起工作的開發人員。通過一點編程,它看起來像cobertura測試結果是最容易處理的。根據以下示例XML報告,將一個快速Perl腳本放在一起檢查命中計數爲0的行應該不會很困難。 https://raw.github.com/jenkinsci/cobertura-plugin/master/src/test/resources/hudson/plugins/cobertura/coverage-with-data.xml 我能夠發現第24行是唯一執行了0次的行具有快速找到

Hits="0" 

雖然我是能找出哪一行沒有執行,我不得不滾動起來頗有幾分要弄清楚什麼類和方法行定位於一種快速的Perl腳本可以消除回滾的需要,並且可以更高效地提供線路所在的包裹,類別和方法。 我使用谷歌瀏覽器查看了Emma HTML報告示例,它非常容易訪問。我可以告訴哪些方法經過了充分測試,哪些不是。弄清楚哪些行被執行,哪些行不是更困難。我可以告訴一個方法不是100%執行,然後在報告中導航到它。然後我必須使用屏幕閱讀器提供的按鍵來在每行代碼上宣佈顏色。我忘了確切的顏色名稱,但我可以告訴已經執行過的行,因爲我的屏幕閱讀器列出它們具有不同的顏色。這工作但但是很慢,因爲我不得不手動檢查方法的每一行;由於我的屏幕閱讀器無法自動公佈顏色變化,因此未完全執行。我不確定您的開發人員會如何執行相同的操作,因爲我不知道他的確切輔助技術設置。

+0

我的同事也在Windows上使用Jaws來瀏覽網頁,但使用Cobertura的XML輸出似乎是最佳解決方案。 – Antoine 2011-12-20 15:13:36

+0

好東西。這項工作已爲我們完成!也許XSLT將幫助您以更易於訪問的格式顯示XML數據。 – Brad 2011-12-20 16:24:55

0

如何使用GreaseMonkey腳本搜索所有具有nbHitsUncovered類的行,並向報表中添加包含想要的信息的某個列表/表?

2

我在Antoine附近進行了挖掘,因爲我在項目中也使用了SONAR和Cobertura,並且對您的問題很感興趣。從我看到的當你告訴ANT任務產生「html」作爲輸出時,你會得到所有想要的行信息,但正如你所指出的那樣,它不是一個容易解析的格式(並且可能會有變化)。

隨着SONAR,我告訴Cobertura輸出「xml」,它給我一個名爲coverage.xml的文件和輸出。不幸的是,它不包含逐行數據,我看不到任何ANT task parameters將其從Cobertura文檔中包含。

對我而言,名爲cobertura.ser的文件包含您需要的所有數據,但只有HTML報告會爲您顯示它。我相信你的問題的答案可能在於試圖從cobertura.ser提取所需的序列化數據。

查看源代碼,我可以看到下面的類

net.sourceforge.cobertura.reporting.html.HTMLReport 
net.sourceforge.cobertura.reporting.xml.XMLReport 

我懷疑你可以嘗試做的是採取HTMLReport副本爲基礎,嘗試寫的輸出格式爲XML一樣,你然後可以爲您自己的目的進行解析(或者調用XMLReport中HTMLReport使用的相同方法調用)。我可以看到字符串nbHitsUncoveredHTMLReport,所以希望你只有一個類可以寫。

我已經搜索了一下,看不到任何人做了這個,但它看起來像一個有用的增強。

+0

cobertura.ser文件不是人類可讀的。你必須運行一個報告來理解它。但是,如果您告訴format =「xml」,則XML可用。請參閱:http://cobertura.sourceforge.net/introduction.html – oers 2011-12-20 14:19:46

+0

我沒有安裝Cobertura,但是我在網上找到的示例XML給出了每行的命中數。如果我發現的XML是有效的,那麼命中計數爲0應該提供您需要的所有信息。 – Jared 2011-12-20 14:46:31

+0

@oers。是答案中提供的[ANT任務參數](http://cobertura.sourceforge.net/anttaskreference.html)的鏈接解釋了「xml」和「html」報告輸出的選項。請參閱標題爲「cobertura-report Task」一節 – Brad 2011-12-20 16:05:01