2011-10-27 49 views
0

我有一個分類函數,它確定一段文本是否屬於一個類別(即它返回真/假)。我有一系列真實世界的例子,我不指望它100%的時間正確分類。RSPEC能否處理90%通過的測試就足夠了?

def meal?(text) 
    !text.match(/restaurant|meal|wine|.../i).nil? 
end 

RSPEC可以指定一個測試,當我喂這些數以百計的例子,該功能,只要90%的正確識別,那麼它算作一通?更好的辦法是讓RSPEC輸出的例子在報告中失敗。如果可能的話,如何寫一個這樣的測試?

回答

2

當然。

total_correct = 0; 
@examples.each do |e| 
    match = text.match(/restaurant|meal|wine|.../i) 
    match.nil? ? puts e : total_correct += 1 
end 
(total_correct.to_f/@examples.size).should >= 0.9 

任何你可以比較,或減少到一個布爾表達式,RSpec可以處理...這幾乎是軟件中的一切。這只是解決如何表達它的問題。

+0

感謝它的工作。在所有測試運行併成爲報告的一部分之後,是否有API方式輸出不正確的文本?無論是HTML還是控制檯輸出? – lulalala

+0

並非如此,但您可以編寫自己的輸出方法,只需將其記錄到文件即可。根據你的需要,它可能很簡單。但我不確定這是否屬於單元測試,因爲這聽起來更像測量培訓質量,而不是實施的準確性,但它可能適合您。 – jefflunt