我有一種情況,我需要知道從單個JUnit測試中調用了哪些方法。舉例來說,如果我有以下的僞代碼:執行Java單元測試期間的方法調用列表
public class UnitTest {
public main() {
Circle c = new Circle()
c.getArea()
}
}
public class Circle {
public Circle() {
...
}
public getArea() {
...
getRadius()
}
private getRadius() {
...
}
}
的單元測試類的方法調用按照這個順序(雖然我的目的,我並不需要維持秩序,或知道的呼叫者的方法):
- UnitTest.main
- Circle.Circle
- Circle.getArea Circle.getRadius
本質上,我想知道在JUnit測試中實際正在執行的程序的哪一部分。我想我可以動態地看出這一點,但我無法找到工具或方法。我發現的一些工具的主要問題是它們通常非常直觀(需要用戶交互才能提取所需的數據)。我正在尋找的東西,只給了我的方法列表(XML,文字等...)沒有GUI方面。最後,我試圖通過腳本方法爲測試套件自動化。
我想使用將任一方法:
- 使用Java代理在每一個方法調用打印出class.method。
- 跟蹤使用方面
如果有一個工具,它已經這樣做了,這將是巨大的。如果沒有,看起來我正在按照我指定的方法解決我的問題。
任何幫助/建議,將不勝感激。
UPDATE,解決 我決定用艾瑪用下面的命令來提取的方法調用(只需要一個多0%的覆蓋率任何方法分析報告)的信息:
emmarun -r xml // To output to XML
-Dreport.sort=-method // Sort method coverage in descending order
-Dverbosity.level=silent // Minimize script output
-Dreport.metrics=method:1 // Flag any method with a 0% coverage
-Dreport.columns=method,name // Only show the method and name columns
-Dreport.depth=method // Consider the data of method coverage
我確實考慮過一個覆蓋工具(目前我正在看Emma試圖判斷我是否可以輕鬆地從報告中提取所需的信息)。儘管如此,我仍然試圖找到一個更簡單的解決方案。必須有一些簡單的方法來提取正在運行的程序的方法調用列表。 –
Emma和Cobertura可以將結果導出爲包含類和方法名稱的XML,還是我誤解了您的需求? –
在看了艾瑪之後,我確信我可以從XML文件中獲取所有必需的信息。 –