当前位置:  开发笔记 > 编程语言 > 正文

你可以单元测试混淆代码吗?

如何解决《你可以单元测试混淆代码吗?》经验,为你挑选了1个好方法。

我希望在我们现有的Ant构建脚本中混淆我们的Java Web应用程序代码,但是遇到了关于单元测试的问题.我在代码编译之后,在jar编辑之前和运行单元测试之前混淆了代码.

但是,如果我混淆了我的生产代码而不是我的测试代码,那么我的所有测试都会失败,因为他们试图调用不再存在的方法,因为它们已被混淆器重命名.我可以将某些方法标记为不混淆,以便外部系统(例如我们的测试套件)可以使用它们,但由于我们正在为高单位测试覆盖率进行拍摄,因此我们需要将所有方法标记为不可篡改.

如果我也混淆了测试类,我会遇到两个问题:

1:生产类和测试类合并到同一个输出目录中,我无法从生产.jar文件中排除测试类

2:我无法运行正常的Ant批处理调用:

 
      
           
      
 

因为混淆器改变了测试的名称.

我可以在生成的.war/.ear文件上运行混淆器,但是我想让我们的单元测试针对修改后的代码运行,以驱除混淆器引起的任何错误.

我目前正在与Zelix KlassMaster合作,但我仍然处于评估阶段,所以如果他们能够更好地工作,我会接受其他选择.



1> TofuBeer..:

我使用yguard(它是免费的,这就是为什么我提到它).

你应该能够告诉混淆器不要混淆某些东西(看这里似乎你可以).

正如其他人所说的那样,不要混淆测试,但要对其余部分进行模糊处理.

但是,我建议您执行以下操作:

    jar未经混淆的文件(如果需要)

    测试未混淆的文件

    如果他们通过测试然后混淆罐子混淆的文件

    测试混淆的文件

它会慢一些,但如果测试在步骤3中失败,那么(可能)修复会更容易,如果测试在5时失败,那么你就知道混淆问题不是你的源代码.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有