212 votes

Comment comparer des Listes de Tests Unitaires

Comment cela peut-il test échoue?

    [TestMethod]
    public void Get_Code()
    {
        var expected = new List<int>();
        expected.Add(100);
        expected.Add(400);
        expected.Add(200);
        expected.Add(900);
        expected.Add(2300);
        expected.Add(1900);

        var actual = new List<int>();
        actual.Add(100);
        actual.Add(400);
        actual.Add(200);
        actual.Add(900);
        actual.Add(2300);
        actual.Add(1900);

        Assert.AreEqual(expected, actual); //AreSame(expected, actual) and IsTrue(expected.Equals(actual))  fails too
    }

428voto

Jon Skeet Points 692016

EDIT: Pour faire des assertions sur les collections, vous devez utiliser CollectionAssert:

CollectionAssert.AreEqual(expected, actual);

List<T> ne pas surcharger Equals, donc si Assert.AreEqual seulement des appels Equals, il va finir à l'aide de la référence à l'égalité.

42voto

Shyju Points 46555

Je suppose que cela aidera

Assert.IsTrue(expected.SequenceEqual(actual));

18voto

Declan Points 548

J'ai essayé les autres réponses dans ce fil, et ils n'ont pas de travail pour moi et j'ai été de comparer des collections d'objets qui ont les mêmes valeurs stockées dans leurs propriétés, mais les objets sont différents.

Appel De La Méthode :

CompareIEnumerable(to, emailDeserialized.ToIndividual,
            (x, y) => x.ToName == y.ToName && x.ToEmailAddress == y.ToEmailAddress);

Méthode pour les comparaisons:

private static void CompareIEnumerable<T>(IEnumerable<T> one, IEnumerable<T> two, Func<T, T, bool> comparisonFunction)
    {
        var oneArray = one as T[] ?? one.ToArray();
        var twoArray = two as T[] ?? two.ToArray();

        if (oneArray.Length != twoArray.Length)
        {
            Assert.Fail("Collections are not same length");
        }

        for (int i = 0; i < oneArray.Length; i++)
        {
            var isEqual = comparisonFunction(oneArray[i], twoArray[i]);
            Assert.IsTrue(isEqual);
        }
    }

7voto

ce test compare une date d'entrée, vérifie si ses une année bissextile, le cas échéant, les sorties de 20 années bissextiles à partir de la saisie de la date, si ce n'est, sorties les 20 PROCHAINES années bissextiles, myTest.Les tests se réfère à la myTest instance qui appelle à son tour les valeurs à partir d'une Liste appelée Test contenant les valeurs calculées nécessaire. le cadre d'un exercice que j'avais à faire.

[TestMethod]
        public void TestMethod1()
        {
            int testVal = 2012;
            TestClass myTest = new TestClass();
            var expected = new List<int>();
            expected.Add(2012);
            expected.Add(2016);
            expected.Add(2020);
            expected.Add(2024);
            expected.Add(2028);
            expected.Add(2032);
            expected.Add(2036);
            expected.Add(2040);
            expected.Add(2044);
            expected.Add(2048);
            expected.Add(2052);
            expected.Add(2056);
            expected.Add(2060);
            expected.Add(2064);
            expected.Add(2068);
            expected.Add(2072);
            expected.Add(2076);
            expected.Add(2080);
            expected.Add(2084);
            expected.Add(2088);
            var actual = myTest.Testing(2012);
            CollectionAssert.AreEqual(expected, actual);
        }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X