TDD には自動化されたテストが必要なので、Android プロジェクトで TDD をどのように適用したか他の人から聞きたいです。あなたのチームにとって何がうまくいった/うまくいかなかったか? 特にビジュアル テストをどのように自動化しましたか? サービス層とモデルの TDD を確認できますが、TDD とアクティビティ、レイアウトの視覚的な変更などはどうですか?
3 に答える
UI/アプリケーション エクササイザー モンキーとも呼ばれるモンキー ツールは、UI のバグやエラーの特定に非常に役立ちます。Android アプリケーションをリリースする前に、apk に対して実行することをお勧めします。
使い方
Monkey は、任意のエミュレータ インスタンスまたはデバイスで実行できるコマンド ライン ツールです。ユーザー イベントの疑似ランダム ストリームをシステムに送信します。これは、開発中のアプリケーション ソフトウェアのストレス テストとして機能します。それを制御するには、オプションのリストがあります。
オプションを使用すると、以下を制御できます。
- 基本構成:イベント数
- 制約 : パッケージの制限
- イベントの種類と頻度
- デバッグ オプション
これは、monkey を実行するための一般的なコマンドです。
adb shell monkey [options]
//example
adb shell monkey -p your.package.name -v 500
詳細については、公式の Android 開発者 Web サイトのこのリンクを参照してください。
Android アプリの単体テストのベスト プラクティス:
ApiDemosサンプル アプリには、 ActivityUnitTestCaseクラスとActivityInstrumentationTestCaseクラスがあります。
これらは、Android プログラムをテストするためのユーティリティ クラスです。
参照へのリンクは次のとおりです: ActivityInstrumentationTestCase および ActivityUnitTestCase
android.jarには、プレーン オールド ユニット テスト用のJUnitテスト フレームワークのサブセットが含まれています。作成方法と実行方法については、ApiDemosサンプルをご覧ください。
Robotiumも試すことができます!とRobolectric
SDK ドキュメントの Spinner/SpinnerTest サンプル アプリと、メモ帳サンプル アプリのテスト プロジェクトを見てください。Hello, Testing チュートリアルもあります。
ActivityInstrumentationTestCase ではなく、ActivityInstrumentationTestCase2 を使用してください。
ActivityUnitTestCase の価値は限られています。これは、実際の Android システムとはあまり似ていないテスト ハーネスで実行されます。AndroidInstrumentationTestCase2 を使用すると、さらに多くの作業を行うことができます。
android.test のすべてのテスト ケース クラスは、Junit4 ではなく、Junit3 に基づいています。Junit3 オンラインで多くのドキュメントを見つけることができます。
android.test テスト ケース クラスは「単体テスト」を模倣します。コンポーネント クラスはリフレクションだけでは正しくインスタンス化できないため、Junit3 を使用した真の単体テストは Android では Activity などの一部のコンポーネントでは実行できません。ActivityInstrumentationTestCase2 などのクラスは、これを「魔法」で克服します。私はそれらを、Junit3 の TestCase に非常によく似た単体テスト クラスと考えています。単体テストには外部依存関係が想定されておらず、Android アクティビティ (たとえば) には Android システムが必要であるため、"機能テスト" と呼ばれます。これはつまらないことだと思いますが、何でも...
手順: まず、POJO (Plain Ol' J--- Objects) でできるだけ多くを定義することから始めます。単体テストでそれらをテストします。Robotium などの機能テスト フレームワークとの相互作用をテストします。Android オブジェクト以外にはモックを使用します。
そこから、android.test.mock のスタブ Android オブジェクトと独自のスタブを使用して、Android オブジェクトをテストします。最後に、他のすべての設定が完了したら、Android テスト ケースを使用して「フレームワーク」をテストします。
Android オブジェクトのモックは実装が容易ではないため、android.test と android.test.mock の「モック」は実際にはスタブです。
Androidに TDD を適用するには、 Android Testing Codelabが非常に役立ちます。TDD を行う前に、MVP や MVVP などの優れたアーキテクチャ パターンを適用する必要があります。そのため、アクティビティとフラグメントからさらに多くのコードを抽出できます。アクティビティ、レイアウトの視覚的な変更などについては、コードラボの7 番目のポイントを確認できます。Espresso を使用して、アクティビティとビジュアル レイアウト テストの TDD を実行しました。私はそれを試してみましたが、それは私にとって非常に役に立ちました。