如何使用流利断言来测试不等式测试中的异常

本文关键字:测试 不等式 异常 何使用 断言 | 更新日期: 2023-09-27 18:32:03

我正在尝试使用 C# 中的流利断言为大于覆盖的运算符编写单元测试。如果其中一个对象为 null,则此类中的大于运算符应该引发异常。

通常在使用 Fluent Assertions 时,我会使用 lambda 表达式将方法放入操作中。然后我会运行该操作并使用action.ShouldThrow<Exception>.但是,我不知道如何将运算符放入 lambda 表达式中。

为了一致性起见,我宁愿不使用 NUnit 的Assert.Throws()Throws约束或 [ExpectedException] 属性。

如何使用流利断言来测试不等式测试中的异常

你可以尝试这种方法。

[Test]
public void GreaterThan_NullAsRhs_ThrowsException()
{
    var lhs = new ClassWithOverriddenOperator();
    var rhs = (ClassWithOverriddenOperator) null;
    Action comparison = () => { var res = lhs > rhs; };
    comparison.Should().Throw<Exception>();
}

它看起来不够整洁。但它有效。

或两行

Func<bool> compare = () => lhs > rhs;
Action act = () => compare();

你也可以使用调用

 comparison.Invoking(()=> {var res = lhs > rhs;})
.Should().Throw<Exception>();

更多信息在这里