私は、既存のAntビルドスクリプトでJava Webアプリケーションコードを難読化しようとしていますが、単体テストに関する問題が発生しています。私はコードがコンパイルされた直後、jar-edされる前、そしてユニットテストが実行される前にコードを難読化しています。ユニットテスト難読化コードはありますか?
しかし、私がテストコードではなく私の生産コードをわかりにくくすると、obfuscatorによって名前が変更されたので、もはや存在しないメソッドを呼び出そうとしているので、すべてのテストは失敗します。特定のメソッドを難読化して、テストスイートなどの外部システムで使用できるようにすることができますが、単体テストの範囲を広げるためにはすべてのを難読化不可能としてマークする必要があります。
私もテストクラスを難読化した場合、私は2つの問題に実行:
1:生産クラスとテストクラスが同じ出力ディレクトリにマージされますと、私はからテストクラスを除外することができません生産.jarファイル
2:難読化ツールは、テストの名前が変更されたため
<batchtest todir="${basedir}/reports">
<fileset dir="${basedir}/components/common/build-zkm">
<include name="**/*Test.class"/>
</fileset>
</batchtest>
:私は私の通常のAntのbatchtestコールを実行することはできません。
結果の.war/.earファイルでobfuscatorを実行するだけで済みますが、難読化ツールによって発生したバグを排除するために、変更されたコードに対してユニットテストを実行したいと考えています。
私は現在Zelix KlassMasterと一緒に作業していますが、私はまだ評価段階にありますので、うまく動作するには他のオプションも利用できます。
私はKlassMasterで "exclude *。* Test;"を追加することでこれを行う方法を見つけました。私のスクリプトでは、彼らは今実行されます。 obfuscatorを使ってテストを実行する必要があるので、出力ディレクトリのプロダクションクラスと混ざり合っています。私はそのための設定オプションを確認しています –