136

私はTDDとxUnitを初めて使用するので、次のようなメソッドをテストしたいと思います。

List<T> DeleteElements<T>(this List<T> a, List<T> b);

使用できるAssertメソッドはありますか?このようなものがいいと思います

List<int> values = new List<int>() { 1, 2, 3 };
List<int> expected = new List<int>() { 1 };
List<int> actual = values.DeleteElements(new List<int>() { 2, 3 });

Assert.Exact(expected, actual);

このようなものはありますか?

4

5 に答える 5

176

2021-2001年4月の更新

FluentAssertionsの使用をお勧めします。コレクションを含む多くのユースケースに対応する、IntelliSenseに適した膨大なアサーションライブラリがあります

collection.Should().Equal(1, 2, 5, 8);
collection.Should().NotEqual(8, 2, 3, 5);
collection.Should().BeEquivalentTo(8, 2, 1, 5);

元の回答

xUnit.Netはコレクションを認識するので、実行する必要があります

Assert.Equal(expected, actual); // Order is important

CollectionAsserts.csで他の利用可能なコレクションアサーションを確認できます

NUnitライブラリコレクションの比較方法は次のとおりです。

CollectionAssert.AreEqual(IEnumerable, IEnumerable) // For sequences, order matters

CollectionAssert.AreEquivalent(IEnumerable, IEnumerable) // For sets, order doesn't matter

詳細はこちら:CollectionAssert

MbUnitには、NUnitと同様のコレクションアサーションもあります:Assert.Collections.cs

于 2009-01-07T09:33:38.207 に答える
39

XUnit(1.5)の現在のバージョンでは、単に使用できます

Assert.Equal(予想、実際);

上記のメソッドは、2 つのリストの要素ごとの比較を行います。これが以前のバージョンで機能するかどうかはわかりません。

于 2009-08-09T13:10:22.953 に答える
19

xUnit では、Assert.Collection を使用してテストする各要素のプロパティをチェリー ピックする必要がある場合に使用できます。

Assert.Collection(elements, 
  elem1 => Assert.Equal(expect1, elem1.SomeProperty),
  elem2 => { 
     Assert.Equal(expect2, elem2.SomeProperty);
     Assert.True(elem2.TrueProperty);
  });

これにより、予想されるカウントがテストされ、各アクションが検証されることが保証されます。

于 2016-08-31T09:28:11.147 に答える