(РЕДАКТИРОВАТЬ 2/25, сфокусировано на усилиях по тестированию):
У вас есть 500 подклассов, и у каждого появляется (на основе вашего примера с одним условным условием) 2 случая. Я думаю, вам нужно 500 * 2 теста.
Если ваш код не является регулярным, как вы предполагаете, обычный (охват) инструмент покрытия кода может не быть тем ответом, который вы считаете нужным в качестве отправной точки, но на самом деле он может помочь вам сделать оценку. Код T <50 проверяет случайно выбранные классы и собирает данные покрытия кода P (в процентах) по любой части кодовой базы, которую вы считаете нуждающейся в тестировании (особенно ваши классы). Тогда вам нужно примерно (1-P) * 100 * T тестов. </p>
Если ваши расширенные классы являются такими же регулярными, как вы предполагаете, вы можете создать их. Если вы доверяете процессу генерации, вы можете избежать написания тестов.
(ОРИГИНАЛЬНЫЙ ОТВЕТ, ориентированный на инструменты покрытия трассы)
Большинство инструментов покрытия кода являются инструментами покрытия "линии" или "ветви"; они не учитывают уникальные пути через код. В лучшем случае они считают основные блоки.
Инструменты покрытия пути существуют; люди создавали их для исследовательских демонстраций, но коммерческие версии встречаются относительно редко. Вы можете найти один в http://testingfaqs.org/t-eval.html#TCATPATH. Я не думаю, что это обрабатывает Java.
Одна из проблем заключается в том, что видимые пути в коде, как правило, экспоненциальны в количестве решений, поскольку каждое обнаруженное решение генерирует Истинный путь и Ложный путь на основе результата условного (1 решение -> 2 пути, 2 решения -> 4 пути, ...). Хуже петли фактически являются решением, повторяемым столько раз, сколько повторяется цикл; цикл, который повторяется 100 раз, имеет 2 ** 100 путей. Чтобы решить эту проблему, более интересные инструменты покрытия пути пытаются определить осуществимость пути: если символически объединенные предикаты из условных выражений в префиксе этого пути фактически ложны, путь невозможен и может быть проигнорированным, так как это не может действительно произойти. Другим стандартным приемом является обработка циклов как 0, 1 и N итераций, чтобы уменьшить количество видимых путей. Для управления количеством путей требуется довольно много оборудования, значительно превышающего то, что требуется большинству инструментов тестирования покрытия ветвей, что помогает объяснить, почему реальные инструменты покрытия путей встречаются редко.