2014-04-24 45 views
0

測試浮點平等我有這個結尾的測試:與AssertWasCalled

model.AssertWasCalled(m => m.CalculateBeta(
    Arg<double>.Is.Equal(50), 
    Arg<double>.Is.Equal(3.74593228)); 

我想考這個用喜歡在Microsoft.VisualStudio.TestTools.UnitTesting.Assert

提供delta值
Assert.AreEqual(3.745932, result, 0.000001); 

有沒有辦法做到這一點?

回答

1

呀,還有一個更簡單的方法:

test.AssertWasCalled(
    t => t.CalculateBeta(
     Arg<double>.Matches(a => Math.Abs(a - 50) < 0.01), 
     Arg<double>.Matches(b => Math.Abs(b - 3.74593228) < 0.000001) 
    ) 
); 

其實,你可以通過任何謂詞Arg<T>.Matches()驗證每個參數格外。

+0

不知道爲什麼這不會發生在我身上。我幾乎尷尬離開我的文章在那裏:)謝謝 – ConditionRacer

0

我想出了這個暴行。很想看到一些更好的解決方案。

var values = new List<Tuple<double, double>> 
{ 
    Tuple.Create(50.0, 0.1), 
    Tuple.Create(3.745932, 0.000001), 
}; 
Predicate<double> expected = (x) => 
{ 
    var value = values[0]; 
    values.RemoveAt(0); 

    Assert.AreEqual(value.Item1, x, value.Item2); 
    return true; 
}; 
model.AssertWasCalled(m => m.CalculateBeta(
    Arg<double>.Matches((x) => expected(x)), 
    Arg<double>.Matches((x) => expected(x)); 
相關問題