Sto cercando di offuscare il nostro codice di app Web Java all'interno del nostro script di build Ant, ma sto incontrando problemi relativi al test delle unità. Sto offuscando il codice subito dopo che è stato compilato, prima che venga cancellato e prima che vengano eseguiti i test delle unità.Potete testare il codice offuscato dall'Unità?
Tuttavia, se offro il mio codice di produzione e non il mio codice di test, tutti i test falliscono perché stanno cercando di chiamare metodi che non esistono più perché sono stati rinominati dall'offfuscator. Posso marcare certi metodi per non offuscare in modo che possano essere usati da sistemi esterni come la nostra suite di test, ma poiché stiamo girando per una copertura di prova di unità elevata dovremo marcare tutti i metodi come non-confondibili.
Se offuscare le classi di test così, mi imbatto in due problemi:
1: Le classi di produzione e le classi di test ottenere fuse nella stessa directory di output e non sono in grado di escludere le classi di test dal produzione file .jar
2: non riesco a eseguire il mio normale chiamata batchtest Ant:
<batchtest todir="${basedir}/reports">
<fileset dir="${basedir}/components/common/build-zkm">
<include name="**/*Test.class"/>
</fileset>
</batchtest>
perché l'obfuscator ha cambiato i nomi dei test.
Potrei semplicemente eseguire l'obfuscator sui file .war/.ear risultanti, ma voglio che i nostri test unitari vengano eseguiti contro il codice modificato per eliminare eventuali errori causati dall'offfuscator.
Attualmente sto lavorando con Zelix KlassMaster, ma sono ancora in fase di valutazione, quindi sarei aperto ad altre opzioni se funzionassero meglio.
Ho trovato un modo in KlassMaster per farlo aggiungendo "exclude *. * Test;" nella mia sceneggiatura e ora funzionano. Dato che devo ancora eseguire i test attraverso l'obfuscator, si stanno ancora mescolando con le classi di produzione nella directory di output. Sto verificando le opzioni di configurazione per quello –