我对 VS 2015 中的 Intellitetest(以及一般的单元测试)相当陌生,我正在尝试使用它来测试一种在英寸和毫米之间转换的简单方法。
我了解 Intellitet 在浮点测试方面存在限制。我该如何解决这些问题,最好不要完全跳出框架?我在其余代码中成功使用了它,所以我想找到一个尽可能匹配相同方法的解决方法。
我在一个类上有两个属性:
public double CutLengthInInches
{
get;
set;
}
public double CutLengthInMM
{
get
{
return CutLengthInInches * 25.4;
}
set
{
CutLengthInInches = value / 25.4;
}
}
然后我使用 Intellitetest 创建一个存根,我填写如下:
[PexMethod]
public void CutLengthInMMSet([PexAssumeUnderTest]CutPiece target, double value)
{
target.CutLengthInMM = value;
PexAssert.AreEqual(value, target.CutLengthInMM);
PexAssert.AreEqual(value, target.CutLengthInInches * 25.4);
}
当我运行它时,Intellitest 抱怨一个错误:
分支条件涉及以下操作:
floating point equality
此操作会导致可测试性问题,并且无法生成输入以覆盖调用后的代码。
它指向的行是第一个AreEqual()
调用。对此最整洁的解决方法是什么?