C#: Как Вы тестируете IEnumerable. GetEnumerator () метод?

ALTER TABLE tablename
ALTER COLUMN columnname datatype NOT NULL

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

, Например,

ALTER TABLE orders
ALTER COLUMN customer_id INT NOT NULL
11
задан Svish 2 October 2009 в 14:54
поделиться

3 ответа

РЕДАКТИРОВАТЬ: Обновлено на основе того, что сказал Марк.

Ну, вы могли увеличить охват, выполнив:

// Helper extension method
public static IEnumerable AsWeakEnumerable(this IEnumerable source)
{
    foreach (object o in source)
    {
        yield return o;
    }
}

...

[Test]
public void GetEnumerator_FirstFifteenNumbers_AreCorrect()
{
    IEnumerable weak = new FibonacciSequence().AsWeakEnumerable();
    var sequence = weak.Cast<int>().Take(15).ToArray();
    CollectionAssert.AreEqual(sequence, 
        new[] {1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610});
}

Обратите внимание, что weak объявлен как неуниверсальный IEnumerable тип ... что означает, что вам нужно вызвать на нем Cast , чтобы преобразовать каждый возвращенный объект в int .

I Я не уверен, что беспокоюсь ...

11
ответ дан 3 December 2019 в 06:46
поделиться

Я бы не стал это тестировать. Я бы попытался отфильтровать метод из инструмента покрытия. Я думаю, что страховое покрытие должно проверять то, что я хочу охватить, а не все. Судя по другим комментариям, вы используете TestDriven.Net. Не знаю, насколько хорошо это фильтрует, но с NCover это возможно. Вы также можете попробовать PartCover.

4
ответ дан 3 December 2019 в 06:46
поделиться

Вам придется использовать IEnumerable (не общий); Я отправил ответ, используя Cast , но он все равно будет обмануть (он проверил нужный тип как особый случай) - вам может понадобиться что-то вроде:

public static int CountUntyped(this IEnumerable source) {
    int count = 0;
    foreach(object obj in source) { count++; }
    return count;
}

IEnumerable<T> source = ...
Assert.AreEqual(typed.Count(), source.CountUntyped());
3
ответ дан 3 December 2019 в 06:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: