假設我在IDE中有一個Java程序(本例中爲Eclipse)。 現在假設我執行程序,並在某個時刻終止它,或者它自然結束。如何確定哪些代碼行參與了Java程序的特定執行?
是否有方便方法來確定哪些行至少執行一次,哪些沒有(例如,未達到異常處理或條件?)
手動的方式來收集這些信息將應該不斷地進行調試並保持一組我們至少通過一次的線路。但是,有沒有一些工具或分析器已經這樣做?
編輯:只是澄清:我需要能夠以編程方式訪問此信息,而不一定來自JUnit測試。
假設我在IDE中有一個Java程序(本例中爲Eclipse)。 現在假設我執行程序,並在某個時刻終止它,或者它自然結束。如何確定哪些代碼行參與了Java程序的特定執行?
是否有方便方法來確定哪些行至少執行一次,哪些沒有(例如,未達到異常處理或條件?)
手動的方式來收集這些信息將應該不斷地進行調試並保持一組我們至少通過一次的線路。但是,有沒有一些工具或分析器已經這樣做?
編輯:只是澄清:我需要能夠以編程方式訪問此信息,而不一定來自JUnit測試。
eclemma會是一個很好的開始:代碼覆蓋工具將允許覆蓋會話記錄您正在查找的信息。
你問被稱爲 「覆蓋」 是什麼。有幾種工具可以衡量它們,其中一些可以集成到Eclipse中。我已經使用jcoverage,它工作(我相信它有一個免費試用期,之後你必須購買它)。我沒有使用它,但你也可以嘗試Coverlipse。
如果我正確地理解了這個問題,你想要的不僅僅是標準的堆棧跟蹤數據,而且你也不想用log4j調試語句來手動測試你的代碼。
我唯一能想到的是添加某種字節碼跟蹤。請參閱Instrumenting Java bytecode。文章參考Cobertura,我沒有用過,但聽起來像你需要的...
不覆蓋意味着受所有單元測試在系統中影響的代碼的聯合? 我正在尋找某個執行的結果,而不一定是通過JUnit。但我會檢查出來。謝謝 ! – Uri 2008-11-14 04:55:03