2009-11-02 78 views
3

在使用fit框架檢查結果時,是否有任何處理浮點值的良好/最佳做法?FIT測試中的浮點精度

我們的應用程序做了很多計算。在大多數情況下,檢查值超過6或8位數的精度沒有任何意義。所以我想指定比較預期值和實際值時使用的精度。

我的蠻力解決方案將設置一個精度值,然後比較包含測試用例的ColumnFixture中的值。

這將導致類似:

!|info.fitnesse.fixturegallery.ColumnFixtureTest| 
|firstSummand|secondSummand|precision|expectedResult|calculateSumAndCheck()| 
|2.1|3.3|0.0001|5.3|true| 

這種方法的主要缺點是,我將無法使用合適的比較功能,但寫我自己的。

回答

2

您可以對浮點類型使用一致的字符串格式並比較字符串到字符串。 Fit對你的值真的做了一個ToString(),並與你的wiki中的文本進行比較,所以如果你提供自己的字符串格式,你不需要修改Fit中的內置比較。例如,您可以對浮點類型(float,double等)使用一種類似於「ToStringForComparison()」的浮點類型或擴展方法來指定一種語言,但在C#中, 」。您所有的測試工具都需要在屬性訪問器中使用它來獲得您想要在測試中進行比較的值。

編輯:

如果你想控制的精度,你可以做,通過傳遞精度值到您的格式化功能,同時保持一個值,其中默認精度是不重要的。

+0

不錯的主意! 這只是一個問題。我們的結果通常是通過迭代確定的近似值。我們的域專家計算結果通過MS Excel。然後他們得到例如price = 3.45664。然後他們將這個預期的價值輸入到wiki中。然後它們指定精度,即0.01。如果他們被迫將結果編輯爲3.46,將會非常不方便。 所以我thinc我將創建我自己的RoundedDoubleTypeAdapter和RoundedDouble類。 – jens 2009-11-11 06:50:44