Аннотация:
Данная работа посвящена автоматической генерации модульных тестов для приложений на языке Java, использующих фреймворк Spring. Хотя в последние десятилетия было создано несколько инструментов автоматической генерации тестов для «чистой» Java, специфические особенности этого фреймворка, как правило, не принимались во внимание. Тем не менее, Spring используется при разработке многих промышленных приложений на Java. Использование фреймворка в приложении, для которого необходимо сгенерировать тесты, накладывает дополнительные требования не только к используемым методам анализа кода, но и к виду предлагаемых тестов. Главным источником информации о типах и свойствах объектов в Spring-приложении является его контекст. В данной работе предлагается механизм анализа контекста приложения, который в некоторых случаях позволяет генерировать тестовые сценарии, соответствующие реальному исполнению программы, избегая избыточного мокирования. При этом полная инициализация контекста приложения в процессе анализа не происходит, что делает генерацию тестов безопасной для пользовательских данных. Предложенный инструмент анализа контекста Spring приложения был интегрирован в инструмент автоматической генерации тестов UnitTestBot Java. В заключение приводятся примеры тестов, сгенерированных для некоторых проектов с открытым исходным кодом.