2013-01-04 164 views
1

我正在學習單元測試,並且因爲測試是什麼以及與它們在哪裏結合而變得困惑。單元測試 - 困惑

因此,在這個問題的答案是非常明確的 - https://stackoverflow.com/a/1257583/445330

脫穎而出對我的一點是「它談論到數據庫」喜歡。

在我學習的特定系統中,我需要測試xml樹中的特定節點 - 表示爲對象。

除了加載這個對象,我該如何測試這個值的存在 - 或者我混淆了單元測試和功能測試?

+0

在單元測試中使用外部資源的實例(您不應該因爲它們的非確定性而不應該這樣做)*(它與數據庫交談)*(與列表中的其他兩個選項一起)具體示例。另一方面,XML可以很容易地作爲「本地」資源來準備(參見[akuhn的回答](http://stackoverflow.com/a/14164720/343266))。 –

回答

0

如果這只是一個單元測試,您正在測試正在讀取xml樹並檢查樹的代碼,以瞭解您所期望的任何內容。您可以通過多種方式加載測試對象。其中一個就是讓單元測試構建該對象作爲測試設置的一部分。另一種方法是將xml樹的測試版本存儲在一個平面文件中(與測試類一起),並讓測試在測試時解析該文件。

問題是,測試的輸入需要是一個控件,而不是依賴某些外部資源(如數據庫)的狀態。

0

在我的測試中,我不僅對一個特殊函數做了一個但越來越多的測試,所以單元測試是可能性的一部分。我選擇特定的情況下,例如在一個部門我使用0操作數,單操作數等,具體數值區間的限制,但也正常情況。所有的測試都是可預測的,所以當我更改代碼時,case的執行將確保所做更改的穩定性。

就你而言,我認爲你正在做一個單元測試。

我接受wikipedia定義的單元測試和功能測試。

功能測試是廣泛的和麪向程序。單元測試面向可測試代碼的最小部分,應儘可能通用。

在您的具體情況「在我學習的特定系統中,我需要測試xml樹中的特定節點 - 表示爲對象」如果函數的結果是對象,則應該有一個衆所周知的輸入字符串,文件,靜態定義的對象,以及斷言特定輸入的輸出是具有特定節點的對象,或者更好地提取返回對象,提取特定節點並聲明特定節點應該等於特定值/對象

我希望對大家有用

2

,你鏈接到答案的要點是,

單元測試不應依賴外部資源。

所以只要你的XML樹編程方式創建並存儲在內存僅而不加載從你做的是正確的文件系統(或任何其他外部資源)。

編程方式創建XML樹可以很尷尬,所以你可以做的是樹存儲爲一個XML文件中的同一個包你的測試,然後用加載它們

this.getClass().getClassLoader().getResourcesAsStream(name); 

不作爲計一個外部資源,因爲它是從測試套件的類路徑加載的。

+0

xml樹/對象是從配置文件中的值和數據庫表中的值的合併混合生成的。這些值被合併到1個大型配置對象中,該配置對象本質上是一個xml樹。我正在嘗試測試此對象中是否存在值/節點。 –

+0

這聽起來很混亂。通常能夠從外部依賴關係中測試應用程序時,需要更改應用程序,使得所有外部依賴關係都由單獨的圖層捕獲,並且可以將其用於測試。你最好看看存根和嘲笑。 – akuhn

+0

我想過嘲笑。如果我使用模擬和假的值,是否不符合檢查對象屬性的期望值的目的? –