52

C# で Fluent Assertions を使用して、オーバーライドされた演算子よりも大きい単体テストを作成しようとしています。このクラスの大なり演算子は、いずれかのオブジェクトが null の場合に例外をスローすることになっています。

通常、Fluent アサーションを使用する場合、メソッドをアクションに入れるためにラムダ式を使用します。次に、アクションを実行して を使用しますaction.ShouldThrow<Exception>。ただし、演​​算子をラムダ式に入れる方法がわかりません。

一貫性のために、NUnit のAssert.Throws()ThrowsConstraint 、または属性を使用したくありません。[ExpectedException]

4

1 に答える 1

82

このアプローチを試すことができます。

[Test]
public void GreaterThan_NullAsRhs_ThrowsException()
{
    var lhs = new ClassWithOverriddenOperator();
    var rhs = (ClassWithOverriddenOperator) null;

    Action comparison = () => { var res = lhs > rhs; };

    comparison.Should().Throw<Exception>();
}

それは十分にきれいに見えません。しかし、それは機能します。

または2行で

Func<bool> compare = () => lhs > rhs;
Action act = () => compare();
于 2016-01-26T04:06:51.400 に答える