2013-07-28 72 views
0

我正在寫一個gem來包裝xmpp4r RubyGem。我想爲我所能做的所有事情添加測試,但是我對測試很陌生,並且有點卡在這裏。從本質上講,我希望我的一個類具有「連接」功能,但我不知道如何測試這樣的事情......我在網上可以找到的有關測試的所有例子都過於簡化了。它是「綠色西蘭花」等等,你明白了。如何在Ruby代碼中測試看似「無法測試」?

如何測試看起來更復雜的東西?關於這些東西的良好文檔的鏈接會很好,以及來自您自己的體驗的更多個性化答案。

編輯:可能讓測試通過,如果它沒有遇到任何異常?通過這樣做我會走在正確的道路上嗎?

回答

2

只要記住你作爲程序員,你是你自己的代碼世界的領主。

與構建其他人易於使用的應用程序的方式相同,您可以幫助自己並使代碼易於測試。做OO編程的主要好處之一是它將行爲封裝到方法中,然後使用這些方法作爲關鍵測試點來更容易地測試代碼。如果你的代碼很難測試,這是因爲你沒有看到你自己或測試者作爲你的應用程序/代碼的另一個用戶。

測試與任何框架或技術沒有直接關係。 嘗試將它看作是與代碼本身分離的東西,比這更大的東西。 如果你不知道如何測試是因爲你很可能不知道你爲什麼需要它以及它將如何使用。

嘗試做一些TDD(測試驅動開發),你會明白我的觀點。

還要記住有不同類型的測試: 功能測試/高級 單元測試/低電平 UAT /用戶驗收測試 性能測試 探索性測試/手動測試 集成測試(你可以建立一些您編碼的部分的實體模型將用於預測整合之前的任何問題)

測試很昂貴,所以測試所有內容都不是測試需要測試的內容。

即使是NASA不測試「一切」

測試是......深編程。 漂亮的潛水!

http://en.wikipedia.org/wiki/Software_testability

+0

我喜歡你的一般概述風格。當我在尋找更有針對性的建議時,您的回覆非常豐富,我肯定會考慮您發佈的內容。感謝您花時間和精力爲我更清楚一點! –

2

首先,檢查寶石本身進行測試。如果它是和測試通過,你應該可能相信寶石的代碼。然後,您可以模擬對gem的任何調用,並在測試成功或失敗情況時返回適當的調用。

xmpp4r.should_receive(:connect).and_return(mock("xmpp4r")) 

如果創業板沒有經過測試,它是關於一樣的,你沒有自己的任何試驗。你應該考慮使用另一個寶石或自己測試它(甚至使用TDD創建一個)。

+0

這非常簡明扼要,雖然我之前讀過這篇文章,但它已經讓我大跌眼鏡,所以這對於整個事情的這個方面是一個很好的提醒。非常感謝你! –