AFAIK eclEmma 以及许多其他覆盖系统,修改您的 .class 文件以添加覆盖指令。大多数这些工具是在“编译时”而不是运行时执行此操作。
相反,PowerMock 以及 AspectJ LTW 和许多其他系统在“运行时”操作相同的字节码:
PowerMock 是一个框架,它扩展了 EasyMock 等其他模拟库,使其具有更强大的功能。PowerMock 使用自定义类加载器和字节码操作来模拟静态方法、构造函数、最终类和方法、私有方法、删除静态初始化程序等。
我在 eclEmma(各种版本)和 Cobertura 与 AspectJ LTW 结合使用时遇到类似的问题,因为当 .class 文件发生运行时修改时,它会以某种方式破坏覆盖工具之前所做的修改。
我还没有找到解决办法,但至少找到了症状。
正确的解决方案是调试 PowerMock 检测并找出它在何处以及如何破坏覆盖工具。对于测试工具来说,破坏覆盖率工具是一个很大的问题,因为两者经常一起使用:)
| 归档时间: |
|
| 查看次数: |
5973 次 |
| 最近记录: |