在發佈模式與調試模式下運行時,我們有一些單元測試失敗。如果我在釋放模式下附加調試器,則測試通過。有太多的代碼可以在這裏發佈,所以我只是在調試發佈模式問題時尋找最佳實踐。我已檢查:在發佈模式與調試模式下代碼的行爲有所不同
- DEBUG和RELEASE預處理程序指令,但我沒有找到任何。
- Conditional Methods
解決方案:在這種情況下,它是因爲我比較浮點變量是否相等。我無法改變的花車爲十進制沒有大規模的重構,所以我增加了一個擴展方法:
可能導致您看到的行爲public static class FloatExtension
{
public static bool AlmostEquals(this float f1, float f2, float precision)
{
return (Math.Abs(f1 - f2) <= precision);
}
public static bool AlmostEquals(this float f1, float f2)
{
return AlmostEquals(f1, f2, .00001f);
}
public static bool AlmostEquals(this float? f1, float? f2)
{
if (f1.HasValue && f2.HasValue)
{
return AlmostEquals(f1.Value, f2.Value);
}
else if (f1 == null && f2 == null)
{
return true;
}
return false;
}
}
幾個問題。 1.你給這個問題帶來了些什麼樣的失誤? 2.你檢查了條件方法嗎? – 2011-01-24 20:59:39
主要問題是Equals方法返回false。但是,如果我分別採取每一個陳述,他們都會返回true。如果我嘗試附加一個調試器,問題就會消失。 – 2011-01-24 21:02:07
是否與浮點相關(數據類型double等)? – stefan 2011-01-24 21:04:00