Ух ты, эти цифры довольно большие! Я примерно 1: 1, иногда для классов, которые имеют более высокую цикломатическую сложность, это может приблизиться к 2: 1 в пользу модульных тестов LOC, но тогда это вызывает тревожные сигналы, что класс нуждается в рефакторинге.
Вы упоминаете, что используете тот же стиль для своих юнит-тестов. Это хорошо, если рассматривать ваши тесты как производственный код, но вам действительно нужно много комментариев для тестового кода? Вы называете свои методы тестирования, чтобы они описывали то, что утверждает тест? например, используя именование функции GivenXWhenYThenZ, тогда должно быть довольно ясно, что тест делает без большого раздела комментариев.
Реорганизуете ли вы свои тесты? переместить любое дублирование настроек и т. д. в отдельные методы?
Вы держите свои модульные тесты простыми, чтобы они утверждали только одну вещь за тест?
а вы чрезмерно тестируете такие вещи, как геттеры / сеттеры?