Я пытаюсь запутать код нашего веб-приложения на Java в существующем скрипте сборки Ant, но у меня возникают проблемы с модульным тестированием. Я запутываю код сразу после того, как он был скомпилирован, до того, как он будет создан, и до запуска модульных тестов.
Однако, если я запутываю свой производственный код, а не тестовый код, все мои тесты не выполняются, потому что они пытаются вызвать методы, которых больше не существует, потому что они были переименованы обфускатором. Я могу пометить некоторые методы, чтобы не запутывать их, чтобы они могли использоваться внешними системами, такими как наш набор тестов, но, поскольку мы стремимся обеспечить высокий уровень охвата тестами, нам необходимо пометить все наших методов как obfuscatable.
Если я также запутываю тестовые классы, я сталкиваюсь с двумя проблемами:
1: производственные классы и тестовые классы объединены в одном выходном каталоге, и я не могу исключить тестовые классы из рабочих .jar-файлов
2: я не могу запустить свой обычный групповой вызов Ant:
<batchtest todir="${basedir}/reports">
<fileset dir="${basedir}/components/common/build-zkm">
<include name="**/*Test.class"/>
</fileset>
</batchtest>
потому что обфускатор изменил названия тестов.
Я мог бы просто запустить обфускатор для получающихся файлов .war / .ear, но я хочу, чтобы наши модульные тесты запускались с измененным кодом, чтобы устранить любые ошибки, вызванные обфускатором.
В настоящее время я работаю с Zelix KlassMaster, но я все еще на стадии оценки, поэтому я буду открыт для других вариантов, если они будут работать лучше.