W jednym z moich testów chcę mieć pewność, że kolekcja zawiera określone elementy. Dlatego chcę porównać tę kolekcję z przedmiotami oczekiwanej kolekcji , nie odnosząc się do kolejności pozycji. Obecnie mój kod testowy wygląda mniej więcej tak:Czy w Xunit.net można łatwo porównać dwie kolekcje bez uwzględniania kolejności przedmiotów?
[Fact]
public void SomeTest()
{
// Do something in Arrange and Act phase to obtain a collection
List<int> actual = ...
// Now the important stuff in the Assert phase
var expected = new List<int> { 42, 87, 30 };
Assert.Equal(expected.Count, actual.Count);
foreach (var item in actual)
Assert.True(expected.Contains(item));
}
Czy jest jakiś łatwiejszy sposób osiągnięcia tego w Xunit.net? Nie mogę użyć Assert.Equal
, ponieważ ta metoda sprawdza, czy kolejność pozycji jest taka sama w obu kolekcjach. Spojrzałem na Assert.Collection
, ale to nie usuwa oświadczenie Assert.Equal(expected.Count, actual.Count)
w powyższym kodzie.
Dzięki za odpowiedzi z góry.
Należy również sprawdzić rozmiary choć prawda? – aquinas
Myślę, że masz rację: aaquinas: odpowiedź Rapha nie powiedzie się, jeśli lista 1 to {1, 3, 5}, a lista 2 to {1, 3, 3, 3, 5}. Teraz, gdy o tym myślę, sprawdzenie rozmiarów może nie wystarczyć, ponieważ byłoby to niemożliwe, jeśli lista 1 to {1, 1, 3, 5, 5}, a lista 2 to {1, 3, 3, 5, 5}.Nadal +1 do Raph za bardzo elegancki punkt wyjścia. –
Z wyjątkiem różnic między dwiema listami. Jeśli na liście znajduje się więcej pozycji, ten przedmiot zostanie uzyskany. Nie ma potrzeby sprawdzania rozmiarów. – rducom