如何使用Fluent Assertions来测试不等式测试中的异常?

时间:2016-01-26 03:10:09

标签: c# unit-testing lambda nunit fluent-assertions

我正在尝试使用C#中的Fluent Assertions为超过重写的运算符编写单元测试。如果其中一个对象为null,则此类中的大于运算符应该抛出异常。

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

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

1 个答案:

答案 0 :(得分:61)

您可以尝试这种方法。

[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();