Android Mockを使用してAndroidアプリケーションのプライベート関数とフィールドのユニットテストを行うことはできますか?Androidでユニットテストのプライベート関数
「はい」の場合はどうすればよいですか?
Android Mockを使用してAndroidアプリケーションのプライベート関数とフィールドのユニットテストを行うことはできますか?Androidでユニットテストのプライベート関数
「はい」の場合はどうすればよいですか?
単体テストのプライベートメソッドをテストするとちょっと間違って聞こえます。パブリックメソッドとプロテクトメソッドは、単体テストの候補です。プライベートメソッドをテストするだけで、メソッドをパブリックにするか、プライベートメソッドを呼び出すパブリックメソッドのテストをさらに作成し、プライベートメソッドのコア機能をテストできます。
こんにちは、blog article about this topicを投稿し、JavaパッケージとAndroidManifest "パッケージ"の違いを理解することで内部メソッドをテストする方法を示します。
あなたはJavaで伝統的にやっているのと同じトリックを使います:テストするメソッドを保護しましょう。
私はそれが助けてくれることを願っています!
1年後、プライベートメソッドとフィールドのテストに役立つライブラリもプッシュしました。私は、アンドロイド上ではプライベートメソッドをテストする必要があると考えています。
他のクラスがアクセスできると思うのを防ぐために、あなたのアクティビティのメソッドを非公開にしたいと思います(フラグメント化することはできますが、それは間違った習慣ですから、オブザーバブルオブザーバーパターンを使用する方が良いです)。そうすれば、テストだけでアクセスする必要のあるプライベートフィールドとメソッドが完成します。
BoundBox正確にそうです!ここでは以下のことをテストするための活動の2つのprivateフィールドにアクセスするテストの例です:テストフレームワークからプライベートメソッドをテストするための
@UiThreadTest
public void testCompute() {
// given
boundBoxOfMainActivity = new BoundBoxOfMainActivity(getActivity());
// when
boundBoxOfMainActivity.boundBox_getButtonMain().performClick();
// then
assertEquals("42", boundBoxOfMainActivity.boundBox_getTextViewMain().getText());
}
のように、テストフレームワークで同じメソッドが表示されます。ありがとうございますSnicolas、BoundBoxを見てみましょう – Sachchidanand
ベスト、適切な法的な方法は、その方法を超える注釈を@VisibleForTesting ですパブリックメソッドのようにテストフレームワークでも同じメソッドが表示されます。 はこちらOfficial link for VisibleForTesting annotation
これはクリーナーのようですテストの限界のために実際のシステムを変更することはありません。それを試してみませんでしたが、なぜ多くの他の人がこの答えを与えたのだろうかと疑問に思っています – rgv
プライベートメソッドをテストするのにきれいな方法です。試してみる。ありがとう:) – Sachchidanand
私はrfsk2010に同意します。パブリックメソッドを使ってすべてをテストすることが多すぎると分かった場合、クラスが大きすぎて仕事が多すぎるという匂いがするかもしれません。その時点で、コードを単一の責任を持つクラスに分けることができます。多くの場合、これらのクラスは復習可能であり、ユニットテストを分離するのがはるかに容易です。 @downvoter。 – Scott
あなたのdownvoteの理由を説明してください – rfsk2010
それはまた、内部のメソッドをテストすることができればいいです。契約によるプログラミングではあなたの権利が得られますが、プログラミングは分割とコンキュータにも基づいているため、プライベートまたは保護されたメソッドをテストしたくない理由はありません。あなたが与えた理由はあまりにも限られており、開発者によって表現されたすべてのニーズに対処していないため、私は下降しました。 – Snicolas