我希望在我们现有的 Ant 构建脚本中混淆我们的 Java Web 应用程序代码,但在单元测试方面遇到了问题。我在代码编译后、在 jar-ed 之前以及在运行单元测试之前对代码进行了混淆。
但是,如果我混淆了我的生产代码而不是我的测试代码,我的所有测试都会失败,因为它们试图调用不再存在的方法,因为它们已被混淆器重命名。我可以将某些方法标记为不混淆,以便外部系统(例如我们的测试套件)使用它们,但是由于我们正在为高单元测试覆盖率而努力,因此我们需要将所有方法标记为不可混淆。
如果我也混淆测试类,我会遇到两个问题:
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 合作,但我仍处于评估阶段,因此如果它们能更好地工作,我愿意接受其他选择。