gpt4 book ai didi

c# - 这是使用 FluentAssertions 比较可空类型与其基础类型时的错误吗?

转载 作者:太空狗 更新时间:2023-10-29 21:46:07 24 4
gpt4 key购买 nike

当我遇到一个我预计会失败但实际通过的测试时,我正在为一个实用程序库编写一些单元测试。该问题涉及比较两个 float 变量,而不是比较一个 float? 和一个 float 变量。

我使用的是 NUnit (2.6.0.12051) 和 FluentAssertions (1.7.1) 的最新版本,下面是一段说明问题的小代码片段:

using FluentAssertions;
using FluentAssertions.Assertions;
using NUnit.Framework;

namespace CommonUtilities.UnitTests
{
[TestFixture]
public class FluentAssertionsFloatAssertionTest
{
[Test]
public void TestFloatEquality()
{
float expected = 3.14f;
float notExpected = 1.0f;
float actual = 3.14f;

actual.Should().BeApproximately(expected, 0.1f);
actual.Should().BeApproximately(notExpected, 0.1f); // A: Correctly fails (Expected value 3,14 to approximate 1 +/- 0,1, but it differed by 2,14.)
actual.Should().BeInRange(expected, expected);
actual.Should().BeInRange(notExpected, notExpected); // B: Correctly fails (Expected value 3,14 to be between 1 and 1, but it was not.)
}

[Test]
public void TestNullableFloatEquality()
{
float expected = 3.14f;
float notExpected = 1.0f;
float? actual = 3.14f;

actual.Should().BeApproximately(expected, 0.1f);
actual.Should().BeApproximately(notExpected, 0.1f); // C: Passes (I expected it to fail!)
actual.Should().BeInRange(expected, expected);
actual.Should().BeInRange(notExpected, notExpected); // D: Correctly fails (Expected value 3,14 to be between 1 and 1, but it was not.)
}
}
}

正如您从我的评论中看到的那样,在 TestFloatEquality() 中,AB 均正确失败(只需注释掉第一个失败的测试去第二个)。

然而,在 TestNullableFloatEquality() 中,D 通过,但 C 失败。我原以为 C 也会在这里失败。顺便提一下,如果我使用 NUnit 添加断言:

Assert.AreEqual(expected, actual); // Passes
Assert.AreEqual(notExpected, actual); // Fails (Expected: 1.0f But was: 3.1400001f)

那些按预期通过和失败。

所以,对于这个问题:这是 FluentAssertions 中的一个错误,还是我遗漏了一些关于可空比较的内容?

最佳答案

这是一个错误。我在 1.7.x 发布分支和主干中修复了这个问题。新 2.0.0 的开发仍在进行中,因此我们可能最终决定发布 1.7.2。

参见 http://fluentassertions.codeplex.com/workitem/12199以获得确切的状态。

关于c# - 这是使用 FluentAssertions 比较可空类型与其基础类型时的错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10752307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com