簡體   English   中英

單元測試:查找類依賴

[英]Unit tests: finding class dependencies

編寫單元測試時,是否有任何自動化工具來查找類依賴關系。

一個例子來說明我的意思:

我們要為類ToBeTested編寫單元測試。 因此,我將編寫一些測試來驗證類的預期行為。 現在我仍然不知道是否存在類依賴,因為ToBeTested中可能使用了許多其他類。 了解這一點很重要,因為我們將要打破這些依賴關系,或者至少要確保它們是安全的(已經過測試)。

到目前為止,找到依賴項的最佳方法是使用eclemma,它為我提供了在測試期間運行的帶有代碼的類的列表。

但是知道我手動輸入了這些類,有沒有更簡單/自動的方法來獲取這些類,甚至在我的Java程序中使用此列表。

編輯:對不起,我正在使用eclipse和java。

由於單元測試(幾乎總是)是白盒測試,因此您可以簡單地查看被測試類的源代碼以查看其依賴關系。

由某種自動化工具生成的依賴關系列表在理論上聽起來可能不錯,但是以我的經驗來說,這無濟於事 -您需要一個一個地遍歷依賴關系 ,從觀點出發確定哪些是真正的,重要的依賴關系 。進行測試,然后針對您的單元測試進行適當設置/模擬 這部分不能實現自動化(我懷疑它是否會實現)。

對我而言,最簡單,最好的方法是使用最簡單的顯而易見的測試裝置開始運行測試,即通常ToBeTested tested = new ToBeTested() 如果成功,則將調用添加到對象上的所需方法。 如果同樣成功(即在運行時未引發任何異常),則添加斷言。 如果這些步驟中的任何一個失敗,我都會檢查/調試代碼以查看出了什么問題,然后擴展測試裝置以解決這一問題。

在最佳情況下(您自己的代碼上的TDD,是重新開發的),此過程當然要簡單得多,因為該類從一開始就被設計為可測試的,因此它具有最少的依賴項,並且您已經知道這些。 在最壞的情況下(為遺留代碼編寫單元測試),這可能是一個痛苦的過程,但卻是有益的探索和重構過程,需要花費幾個小時才能創建第一個工作測試。 但是下一個要容易得多,在第三次之后,我幾乎總是像傳送帶一樣開始進行更多的測試。

是的,一個是JDepend,它分析軟件包的依賴關系。 我們使用它來自動檢測包之間的周期性依賴關系。 我不知道檢查測試本身的依賴關系有多么容易。

有關在單元測試中使用JDepend的更多詳細信息, 請參見http://www.clarkware.com/software/JDepend.html#junit

還有一個相應的Eclipse插件,用於可視化依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM