在发布模式与调试模式下运行时,我们有一些单元测试失败。如果我在释放模式下附加调试器,则测试通过。有太多的代码可以在这里发布,所以我只是在调试发布模式问题时寻找最佳实践。我已检查:在发布模式与调试模式下代码的行为有所不同
- 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