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