2009-06-09 65 views
1

(撇開吹毛求疵一下如果這是集成測試或單元測試。)單元測試,認證測試和數據文件

我將在大規模的,而第一次測試。如果我的應用程序寫入的VRML文件與參考文件相同,那麼VRML導出程序可以工作,所以我不必在代碼中的每個語句上運行單元測試。我也想用這個比較截圖來做一定程度的窮人gui測試。

是否有一個集成這種測試的單元測試框架(理想用於C++) - 或者至少可以很容易地與單元測試集成?

編輯。似乎更好的術語是批准測試。那麼是否還有其他單元測試框架包含了認證測試?

回答

3

看看Approval Tests,由我的幾個朋友編寫。不是C++,但它是你所追求的一般想法,也被稱爲Golden Master測試。好東西,不管是單元測試還是不是。

1

Kitware,對於VTK,使用CDash進行大部分測試。它的許多測試在本質上與此相似 - 他們寫出渲染模型的圖像,並將其與參考圖像進行比較。

此外,他們在那裏有代碼來處理由於不同的圖形卡驅動程序/製造商等因素對參考圖像的細微差異。測試可以用一種方式來比較參考圖像和一些容差。

1

好吧,我認爲你對單元測試代碼的性質做了一個錯誤的假設;您聲明

如果我的應用程序寫入VRML文件是 一樣的參考之一,然後在 VRML出口的作品,我不那麼有 就在每一個 聲明運行單元測試碼。

如果您希望對您的代碼進行驗證測試,那麼這是嚴格正確的,但請注意,這種類型的測試與單元測試實際上是完全不同的。單元測試用於測試單個代碼單元;它們不存在用於驗證目的。根據您的環境,您可能根本不需要單元測試,但請記住驗證測試(測試整個程序輸出的有效性)和單元測試(測試各個代碼單元如預期的那樣)是完全不同的事情。 (請注意,我真的不想在這方面挑剔;還有,你可以使用大量的單元測試框架來實現這個結果;但請記住,你寫的東西並不是真的「單元測試」,儘管在單元測試框架中運行它們。)

+0

單元測試將自動捕獲錯誤。我改變了應用程序正常工作的一段代碼,但一個導出器失敗了,因爲它依賴於處於特定狀態的特定索引 - 我沒有注意到它們是耦合的,因此不會寫入單元測試。但輸出文件錯誤的是立即紅燈。 在這種情況下,它是一個插件 - 所以可以與主代碼分開進行測試,這讓我認爲是單元測試。 – 2009-06-09 17:42:36

+0

@mgb:單元測試*可以用來自動捕獲錯誤,但這不是它們唯一的目的。考慮TDD;單元測試在這裏有一個完全不同的目的。 – 2009-06-09 18:02:08