我寫了一些單元測試圍繞FTP服務器API測試一個包裝。我的單元測試應該在測試該API的包裝時直接觸摸API嗎?
單元測試和FTP服務器都在同一臺機器上。
包裝器API被部署到我們的平臺並用於遠程處理和Web服務場景。包裝API實質上是通過XML消息來執行任務,例如添加/刪除/更新用戶,更改密碼,修改權限等等。
在單元測試中,比方說要將用戶添加到虛擬域,我創建了要發送到API的XML消息。這個API可以工作並返回一個響應,其中包含有關操作是成功還是失敗(錯誤代碼,驗證失敗等)的狀態信息。
要驗證API包裝器代碼是否確實做了正確的事情(如果響應表示成功),我調用FTP服務器的COM API並直接查詢它的存儲以查看是否(例如創建用戶帳戶時)用戶帳戶確實已創建。
這味道不好嗎?
更新1: @ Jeremy/Nick:包裝是測試的重點,FTP服務器及其COM API是第三方產品,推測經過了充分測試和穩定。包裝器API必須解析XML消息,然後調用FTP服務器的API。我將如何驗證,這可能是一個愚蠢的情況,用戶帳戶的一個特定屬性由包裝器正確設置。例如,由於包裝代碼中的拼寫錯誤,設置FTP帳戶的錯誤屬性或屬性。一個很好的例子就是設置上傳和下載速度限制,這些可能會被轉換爲包裝代碼。
更新2:感謝所有的答案。對於那些建議使用mock的人來說,它已經超出了我的想法,但是燈光還沒有開啓,我仍然在努力讓自己的頭腦變得如何讓我的包裝與FTP服務器的模擬一起工作。 mock將駐留在哪裏,並且將所述mock的一個實例傳遞給包裝API以使用而不是調用COM API?我意識到嘲笑,但努力讓自己頭腦發熱,主要是因爲我發現大多數示例和教程都非常抽象,而且(我很慚愧地說)接近不可理解。
已經研磨過的這種過度的年齡我現在終於明白,當我的單元測試,組件測試或集成測試以及它們的真正含義。 – Kev 2010-03-22 03:45:57