Re[4]: Какие есть фрейворки для unit-testов на .net ( кроме DUnit )
От: SergeyT. США http://sergeyteplyakov.blogspot.com/
Дата: 02.10.13 07:14
Оценка: 10 (1) +2
Здравствуйте, Andir, Вы писали:


A>>при том что с локальными функциями можно поставить точку останова на строчку с нужным тестом?


A>Я тоже не понял особо зачем параметризованные тесты нужны, ведь набор провалившихся тестов с проблемами в разных частях диапазона — это лучше, чем один провалившийся тест на все диапазоны сразу (или может там на атрибутах построена особая магия, которая выдаёт нарушения диапазона значений сразу по всем атрибутам?).


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

A>Приведённый выше пример страдает той же проблемой — провалится один тест, а проблем внутри может быть сразу много. Да и отлаживать тесты — это то ещё кощунство.


Вот именно эта проблема и решается параметризованными тестами!

Следующий тест:

[TestCase("(-Inf,+Inf)", Result = true)]
[TestCase("[0,1.5)", Result = true)]
[TestCase("(0,0)", Result = false)]
[TestCase("[0,-1.12)", Result = false)]
[TestCase("(Inf,-Inf]", Result = false)]
[TestCase(null, Result = false, ExpectedException = typeof(ArgumentNullException))]
public bool Test_Interval_Validity(string range)
{
    try
    {
        Interval.Parse(range);
        return true;
    }
    catch (FormatException)
    {
        return false;
    }
}


Тест-раннером разворачивается в 6 (!) независимых тест-кейсов, каждый из которых запускается независимо:



И если один из тест-кейсов упадет, то мы увидим в точности то, что упало:



Так что по-сути, параметризованные тесты — это такой себе простенький язык для генерации множества тест-кейсов, что вручную получить практически невозможно!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.