Существуют варианты, основанные на разных стилях кодирования и языках. Однако, независимо от языка, который вы используете, самый большой вариант - это вы.
Роберт Мартин однажды сказал:
«Поскольку тесты становятся более конкретными, код становится все более общим».
Это заставило меня задуматься. Более конкретные тесты означают больше тестового кода. Более общий производственный код означает меньше кода, поэтому соотношения тест / код должны расти по мере развития кода.
Но подождите, это тоже не хорошо. В некоторых особых случаях, например, когда вы определяете определенный алгоритм, у вас может быть только 6-10 строк кода, содержащих пару «если», время и, возможно, 2-3 рекурсии. Я могу сказать вам, что этот код будет иметь более 100 строк тестового кода.
В реальном проекте, который больше, чем несколько алгоритмов, соотношение тест / код должно быть где-то между 1: 1 и 2: 1. Если оно становится выше 2: 1, то пахнет тем, что у вас есть тесты, которые должны быть реорганизованы или удалены (или, возможно, код, который сложно протестировать). Вы всегда должны вкладывать в свои тесты тот же объем заботы и рефакторинга, что и в свой производственный код.
В любом случае, лучший ответ на ваш вопрос может быть "Cyclomatic Complexity" . Чем выше цикломатическая сложность вашего метода, тем больше экспоненциально вы должны написать тест, чтобы он охватил все случаи.