Коллекция модульных тестов - PullRequest
0 голосов
/ 11 августа 2009

У меня есть простой метод, который возвращает массив букв алфавита.

public char[] GetLettersOfTheAlphabet() {
    char[] result = new char[26];
    int index = 0;

    for (int i = 65; i < 91; i++) {
        result[index] = Convert.ToChar(i);
        index += 1;
    }

    return result;
}

Я попытался выполнить юнит-тест кода с

[TestMethod()]
public void GetLettersOfTheAlphabetTest_Pass() {
    HomePage.Rules.BrokerAccess.TridionCategories target = new HomePage.Rules.BrokerAccess.TridionCategories();
    char[] expected = new char[] { char.Parse("A"), 
                                   char.Parse("B"),
                                   char.Parse("C"),
                                   char.Parse("D"),
                                   char.Parse("E"),
                                   char.Parse("F"),
                                   char.Parse("G"),
                                   char.Parse("H"),
                                   char.Parse("I"),
                                   char.Parse("J"),
                                   char.Parse("k"),
                                   char.Parse("L"),
                                   char.Parse("M"),
                                   char.Parse("N"),
                                   char.Parse("O"),
                                   char.Parse("P"),
                                   char.Parse("Q"),
                                   char.Parse("R"),
                                   char.Parse("S"),
                                   char.Parse("T"),
                                   char.Parse("U"),
                                   char.Parse("V"),
                                   char.Parse("W"),
                                   char.Parse("X"),
                                   char.Parse("Y"),
                                   char.Parse("Z")};
    char[] actual;
    actual = target.GetLettersOfTheAlphabet();
    Assert.AreEqual(expected, actual);
}

Кажется, это сводится к функции сравнения, которую использует массив. Как вы справляетесь с этим делом?

Ответы [ 6 ]

4 голосов
/ 12 августа 2009

CollectionAssert.AreEquivalent (ожидаемый, фактический) работает.

Я не совсем уверен, как это работает, но работает для моих нужд. Я думаю, что он проверяет каждый элемент в каждом элементе ожидаемой коллекции в фактическом столбце, а также проверяет, что они имеют одинаковое количество, но порядок не имеет значения.

4 голосов
/ 11 августа 2009

Если вы используете .NET 3.5, вы также можете использовать SequenceEqual():

[TestMethod()]
public void GetLettersOfTheAlphabetTest_Pass() {
    var target = new HomePage.Rules.BrokerAccess.TridionCategories();
    var expected = new[] { 'A','B','C', ... };

    var actual = target.GetLettersOfTheAlphabet();
    Assert.IsTrue(expected.SequenceEqual(actual));
}
2 голосов
/ 11 августа 2009

Просто переберите массив и сравните каждый элемент. Индекс 4 в каждом массиве должен быть одинаковым.

Другой способ - проверить массив результатов, если он содержит, скажем, «A», «G», «K» или случайные буквы.

Что-то, чему я научился из модульных тестов, иногда вам приходится либо копировать код, либо выполнять больше работы, потому что такова природа тестирования. В основном то, что работает для модульного теста, может быть неприемлемо для производственного сайта.

0 голосов
/ 11 августа 2009

Прежде всего:


Assert.AreEqual(expected.Length,actual.Length);

Тогда:


for(int i = 0; i < actual.Length; i++)
{

//Since you are testing whether the alphabet is correct, then is ok that the characters
//have different case.
  Assert.AreEqual(true,actual[i].toString().Equals(expected[i].toString(),StringComparison.OrdinalIgnoreCase));
}
0 голосов
/ 11 августа 2009

Вы также можете выполнить тест на размер и несколько выборочных проверок значений в массиве ....

Assert.AreEqual (ожидается. Длина, факт. Длина)

Assert.AreEqual (ожидается [0], фактическое [0]) ....

0 голосов
/ 11 августа 2009

Ваш K в нижнем регистре в ожидаемом массиве, но я считаю, что код генерирует символы в верхнем регистре. Если сравнение чувствительно к регистру, оно может вызвать сбой, если два массива не совпадают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...