2016-06-23 4 views
2

自分のニーズに合わせて他の誰かのオープンソースライブラリを変更しています。その過程で、ライブラリ自体がかなり壊れていることに気付いています。テストはなく、コードの重要な部分は、Android SDKの権限レベルを回避するためにリフレクションを使用しています。私はこれが悪い習慣であると認識していますが、私はこのケースで元の著者には、プライベートまたはプライベートのマークが付いているSDKの一部が保護されているか、公開されていることに同意します。反射の堅牢性をどのように改善できますか?

例えば、あるクラスは、標準のAndroid UIクラスを拡張するだけで何もしませんが、他の方法では変更できないビューの色のゲッターとセッターを提供します。

明らか

、本質的に脆いの誰かが他の人のコードベースでのプライベートコードに依存しているコードが、私は私が行うことができ、少なくとも理解はそれのためにいくつかのテストを書くです。しかし、私が考えることができるのは、それをインスタンス化し、色を変更し、クラッシュするかどうかを確認することだけです。プライベートメンバーにアクセスせずに私が望むことをする方法がないとすれば、これをより美味しくするにはどうしたらよいですか?

答えて

1

これ以上のことはありません。私はあなたが望む特定のリフレクションコードを実行して、それがクラッシュしたか/正しい動作を維持しているかを見る単体テストを追加します。あなたは、第三者の図書館の意図的な詳細を頼りにしています - それはある時点での災害に対するテキストブックの定義です。だから、実際にあなたのアプリケーションのほとんどは、すでにユニットテストでカバーされなければならないのにできるだけ早くこのコードを削除するの移行計画を考え出すの外に、私は単純に(影響を受けるすべてのコードをカバーするユニットテストを書くでしょう、そして何ができないユニットテストのための統合テスト)

関連する問題