私はVS 2015のIntellitest(および一般的な単体テスト)にかなり慣れていないので、それを使用してインチとmmを変換する簡単な方法をテストしようとしています。
Intellitet には浮動小数点テストに関する制限があることを理解しています。理想的には、完全にフレームワークの外に出ることなく、これらを回避するにはどうすればよいですか? 残りのコードでは問題なく使用しているので、できるだけ同じアプローチに一致する回避策を見つけたいと思います。
クラスに 2 つのプロパティがあります。
public double CutLengthInInches
{
get;
set;
}
public double CutLengthInMM
{
get
{
return CutLengthInInches * 25.4;
}
set
{
CutLengthInInches = value / 25.4;
}
}
次に、Intellitest を使用してスタブを作成し、次のように入力します。
[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()
呼び出しです。これに対する最も適切な回避策は何ですか?