Есть ли способ определить набор модульных тестов, которые потенциально могут выполнить данную строку кода?Другими словами, можете ли вы автоматически определить не только , покрыта ли данная строка, но и фактический набор тестов, которые ее покрывают?
Рассмотрим большую кодовую базу, скажем, с единицей 50Ктесты.Очевидно, что их запуск может занять ДЛИННОЕ время - часы, если не дни.Работая в такой кодовой базе, вы хотели бы иметь возможность выполнить некоторые подмножества всех модульных тестов, включая только те, которые покрывают строку (или строки), к которой вы только что прикоснулись.Конечно, вы могли бы найти некоторые вручную и запустить их, но я ищу способ сделать это быстрее и более всесторонне.
Если я думаю об этом правильно, это должно быть возможно.Инструмент может статически обойти все пути кода, выходящие из каждого модульного теста, и получить фрагмент программы, доступный из этого теста.И тогда вы должны (теоретически) быть в состоянии вычислить набор модульных тестов, которые включают данную строку в свой фрагмент, что означает, что строка может быть выполнена этим тестом («мог», а не «будет», потому что фактический путь к коду будетопределяется только во время выполнения на основе входных данных или других условий).У данной строки кода может быть огромное количество тестов, которые ее выполняют (например, код в общей библиотеке), тогда как в других строках может быть несколько (или нет) тестов, охватывающих их.
Итак:
Являются ли мои рассуждения обоснованными для этой идеи?Может ли это быть теоретически сделано, или я что-то упускаю?
Есть ли уже инструмент, который может это сделать?Или это обычное дело с именем, с которым я не сталкивался?Будем признательны за указатели на инструменты в мире Java или на общие исследования по этому вопросу.