java - 如果使用混淆,为什么使用反射对私有(private)方法进行单元测试会失败?

标签 java unit-testing junit

我已经通过了this question on SO regarding unit testing private methods and fieldsthis answer说可以通过反射机制来完成。但是there is a commnent说在混淆的情况下它会惨败。为什么会这样?

最佳答案

混淆的工作原理是用难以阅读的名称替换符号名称(方法、字段 ..)。所以在反编译之后你得到一个 java 文件,你得到一个非常无用的 java 代码。

方法名称会发生​​变化,因此通过反射查找将不起作用。 (除非测试代码使用带有混淆方法名称的反射 - 这不是一件容易的事)

关于java - 如果使用混淆,为什么使用反射对私有(private)方法进行单元测试会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12296980/

相关文章:

java - 是否可以为 azure blob 存储中的给定目录生成具有写入权限的 SAS(共享访问签名)

java - 单元测试 AEM 6.1 和模拟 sling、Jcr 和 Osgi

angularjs - 对 AngularJS 指令的事件广播进行单元测试

java - 解决遗留 junit 测试套件中的 java classpath hell

Java代码找不到nlsxbe.dll的依赖库

java - 理解Java中的层次结构

java - 构建应用程序时运行单元测试 (Android)

java - JUnit4 使用测试套件运行特定包中的所有测试

java - Println测试用例: println and expected output are the same,但测试失败

java - 当 HTTP header 无效(包含空格)时提供自定义错误消息