Уменьшается ли стоимость модульных тестов со сложностью модульного теста?

63
6

Я нахожусь в точке, где должен написать единичный тест для сложного алгоритма, который выполняет моя функция. При вызове функция принимает два обязательных аргумента. На основе комбинации обоих аргументов функция действительно возвращает что-то.

function ReturnDesiredParagraphStyle(currParagraphStyle, nextParagraphStyle) 
{
// logic
}

Теперь проблема состоит в том, чтобы протестировать любую комбинацию входов и правильность нужного выхода функции. Мне нужно написать сложную логику в модульном тесте, потому что существует так много возможных входов (приблизительно 50 для каждого аргумента). Сложной логикой будет цикл с целью, чтобы мне не приходилось вводить каждую комбинацию входов вручную в модульном тесте.

Я понимаю, что большую часть времени, чтобы написать этот unit тест, обеспечит уровень безопасности, но это не приведет к концепции модульного тестирования бит ad absurdum (поскольку логика в модульном тесте будет настолько сложной и ничего тестирует логику в модульном тесте)?

спросил(а) 2021-01-25T18:13:29+03:00 5 месяцев назад
1
Решение
63

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

В какой-то момент, когда функция вычисляет возвращаемое значение на основе двух или более аргументов, просто становится невозможным написать единичный тест, если количество разных комбинаций ввода слишком велико. И это происходит довольно быстро (экспоненциально).

Но, конечно, тестирование нескольких комбинаций действительно имеет смысл.

ответил(а) 2021-01-25T18:13:29+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема