3

私はプライベートメソッドとフィールドのユニットテストに関するSOに関するこの質問を経験しましたが、この回答は、リフレクションメカニズムを介して実行できることを示しています。しかし、難読化すると惨めに失敗するという意見もありますが、なぜそうなのですか?

4

2 に答える 2

6

難読化は、シンボル名(メソッド、フィールド..)を読みにくい名前に置き換えることで機能します。したがって、コンパイルを解除すると、Javaファイルが得られ、本当に役に立たないJavaコードが得られます。

メソッド名が変更されているため、リフレクションによる検索は機能しません。(テストコードが難読化されたメソッド名でリフレクションを使用しない限り、簡単な作業ではありません)

于 2012-09-06T09:31:10.110 に答える
4

難読化は、プライベートメソッドの名前を好きな名前に変更できます(他のパッケージがそれに依存している可能性があるため、パブリックメソッドでは変更できません)。

リフレクションの危険性は、メソッド名を表す文字列があることです。obfuscaterは、この文字列がプライベートメソッドを参照していることを検出できないため、適切と思われるメソッドの名前を自由に変更できます。

于 2012-09-06T09:31:11.183 に答える