Estoy buscando ofuscar nuestro código de la aplicación web Java dentro de nuestro script de compilación Ant existente, pero estoy teniendo problemas con las pruebas unitarias. Ofusco el código justo después de que se compiló, antes de que se manipule y antes de que se ejecuten las pruebas unitarias.¿Puede usted unidad de prueba de código ofuscado?
Sin embargo, si ofusco mi código de producción y no mi código de prueba, todas mis pruebas fallan porque están tratando de llamar a métodos que ya no existen porque el ofuscador los ha cambiado. Puedo marcar ciertos métodos para no ofuscarlos para que puedan ser utilizados por sistemas externos como nuestro banco de pruebas, pero como estamos filmando para una cobertura de prueba de unidad alta necesitaremos marcar todos de nuestros métodos como no ofuscables.
Si ofuscar las clases de prueba, así, me encuentro con dos problemas:
1: Las clases de producción y las clases de prueba quedan fusionadas en el mismo directorio de salida y no soy capaz de excluir a las clases de prueba de la producción archivos .jar
2: no puedo ejecutar mi normales hormiga llamada batchtest:
<batchtest todir="${basedir}/reports">
<fileset dir="${basedir}/components/common/build-zkm">
<include name="**/*Test.class"/>
</fileset>
</batchtest>
porque el ofuscador ha cambiado los nombres de las pruebas.
Podría simplemente ejecutar el ofuscador en los archivos .war/.ear resultantes, pero quiero que nuestras pruebas unitarias se ejecuten contra el código modificado para eliminar cualquier error provocado por el ofuscador.
Actualmente estoy trabajando con Zelix KlassMaster, pero todavía estoy en la fase de evaluación, por lo que estaría abierto a otras opciones si funcionaran mejor.
Encontré una forma en KlassMaster para hacer esto agregando "exclude *. * Test;" en mi script y ahora se ejecutan. Como aún tengo que ejecutar las pruebas a través del ofuscador, todavía terminan mezcladas con las clases de producción en el directorio de salida. Estoy buscando opciones de configuración para ese –