Я столкнулся с этой дилеммой несколько раз. Должны ли мои юнит-тесты дублировать функциональность метода, который они тестируют, чтобы проверить его целостность? ИЛИ Должны ли модульные тесты пытаться протестировать метод с многочисленными экземплярами входов и ожидаемыми выходами, созданными вручную ?
Я в основном задаю вопрос для ситуаций, когда метод, который вы тестируете, является достаточно простым и его правильную работу можно проверить, посмотрев на код в течение минуты.
Упрощенный пример (в рубине):
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
Я понимаю, что в большинстве случаев метод, который вы тестируете, не будет достаточно простым, чтобы оправдать это. Но мой вопрос остается; Является ли это допустимой методологией в некоторых обстоятельствах (почему или почему нет) ?