Я столкнулся с этой дилеммой несколько раз. Должны ли мои модульные тесты дублировать функциональность метода, который они тестируют, чтобы проверить его целостность? ИЛИ Если модульные тесты стремятся протестировать метод с многочисленными созданными вручную экземплярами входов и ожидаемых выходов?
В основном я задаю вопрос о ситуациях, когда метод, который вы тестируете, достаточно прост, и его правильная работа может быть проверена, взглянув на код на минуту.
Упрощенный пример (в рубине):
def concat_strings(str1, str2)
return str1 + " AND " + str2
end
Упрощенная проверка функциональности для вышеуказанного метода:
def test_concat_strings
10.times do
str1 = random_string_generator
str2 = random_string_generator
assert_equal (str1 + " AND " + str2), concat_strings(str1, str2)
end
end
Я понимаю, что в большинстве случаев метод, который вы тестируете, не будет достаточно простым, чтобы оправдать это. Но мой вопрос остается; - это допустимая методология в некоторых случаях (почему или почему нет)?