Existe-t-il un moyen facile de vérifier dans un test unitaire que deux tableaux sont égaux (c’est-à-dire qu’ils ont le même nombre d’éléments et que chaque élément est le même?).
En Java, j’utiliserais assertArrayEquals (foo, bar);
, mais il semble n’y avoir aucun équivalent pour C #. J’ai essayé Assert.AreEqual(new ssortingng[]{"a", "b"}, MyFunc("ab"));
, mais même si la fonction retourne un tableau avec “a”, “b” échoue toujours
Cela utilise Visual Studio 2008 Team Suite, avec la structure de test unitaire intégrée.
C’est CollectionAssert.AreEqual
, voir aussi la documentation de CollectionAssert .
Class1.cs:
namespace ClassLibrary1 { public class Class1 { Array arr1 = new[] { 1, 2, 3, 4, 5 }; public Array getArray() { return arr1; } } }
ArrayEqualTest.cs:
[TestMethod()] public void getArrayTest() { Class1 target = new Class1(); Array expected = new []{1,2,3,4,5}; Array actual; actual = target.getArray(); CollectionAssert.AreEqual(expected, actual); //Assert.IsTrue(expected.S actual, "is the test results"); }
Test Success, a trouvé l’erreur:
CollectionAssert.AreEqual failed. (Element at index 3 do not match.)
Dans .NET 3.5, considérez peut-être Assert.IsTrue(foo.SequenceEqual(bar));
– il ne vous dira pas à quel indice il diffère, cependant.
Ok, voici une façon un peu plus longue de le faire …
static void Main(ssortingng[] args) { var arr1 = new[] { 1, 2, 3, 4, 5 }; var arr2 = new[] { 1, 2, 4, 4, 5 }; Console.WriteLine("Arrays are equal: {0}", equals(arr1, arr2)); } private static bool equals(IEnumerable arr1, IEnumerable arr2) { var enumerable1 = arr1.OfType