Идея вот в чем. Для каждой функции(метода), которая нуждается в unit-тесте, программист оставляет тег @needTest в DOC-комментарии. После этого при выполнении скрипта специальный модуль отслеживает все запуски этой функции и запоминает при каких аргументах какое возвращаемое значение. По этим данным модуль автоматически строит unit-тесты (PHPUnit). Как бы фиксирует корректную работу приложения в данный момент. После этого можно заниматься рефакторингом или чем угодно.
Есть ли уже такие уже решения? И как Вам кажется, есть ли в этом смысл?
А смысл? Тесты должны документировать код, описывая различные варианты его использования. Если тесты по коду генерировать, как генератор поймёт, что именно вы хотели от кода? По кривому коду будут сгенерированы кривые тесты, и код от этого ровнее не станет.
Но это глупость: отслеживает все запуски этой функции и запоминает при каких аргументах какое возвращаемое значение. По этим данным модуль автоматически строит unit-тесты (PHPUnit). Как бы фиксирует корректную работу приложения в данный момент.
Работу 90% методов нельзя проверить по сравнению input/output
Метод вообще ничего может не возвращать, но зато может вызывать из себя кучу других методов. Никак корректную их работу вы не отследите. Только писать вручную.
А зачем вам генератор тестов? Может быть вам необходим генератор программного кода, которому достаточно сказать: «Хочу программу», генератор прочитает мысли, сгоняет в будущее, поглядит самый правильный вариант развития событий и выдаст вам готовую программу.
Автоматическая генерация тестов по созданному коду это какой-то бред.
падение теста ничего не будет означать — будет больше вероятности, что тест криво сгенерировался. Успех теста тоже ничего не будет означать, по той же причине. Да и устранение зависимостей — не всегда тривиальная задача для человека, а уж для программы вообще, имхо, неразрешимая в наше время, т.к. программе придется программировать, создавать моки, стабы…