Android=アプリケーションの作成にかなりの経験があります。新しいプロジェクトでは、テスト駆動開発(TDD)を実行することにしました。ユーザーシナリオテスト用のRobotiumに手を出しています。それはうまく機能し、簡単に見えます。
ユニットテストでは、(MockContext Android Class))を使用してコンテキストをモックしようとしましたが、できません。このブログを読みました http://sites.google.com/site/androiddevtesting / そしてこれを通して http://sdudzin.blogspot.com/2011/01/easy-unit-testing-for-Android.html 、これは= Androidアプリはまだ非常に限られていて難しいため、PowerMock、jMockit、JeasyTest、またはRoboelectric(MockitoおよびMavenと組み合わせて)、さらにはRoboGuiceを使用することを推奨しています。
私はあなたの意見でどのユニットテストフレームワークがテストに最適であるかについて皆さんから提案を受けたいと思いますAndroidアプリケーション。(特にテストAndroidクラス、テストケースをできるだけ独立させることができるように、モックコンテキストやその他のモック機能を提供する可能性があります。提案やポインタがあれば参考になります。ありがとう
デバイス外のテストについては、 Robolectric を参照してください
デバイス上のテストについては、 Borachio を参照してください
結論:それでも、うまくやることは非常に、非常に難しいです。状況は改善されていますが(状況は6か月前よりも劇的に改善されています)、Androidは、これまでプログラムを作成した中で最もテストに敵対的な環境です。
AndroidでTDDを行うには、個人的に次のすべてを使用します。
また: Dagger または Roboguice などの依存関係注入ライブラリを使用すると、ユニット/統合テストが大幅に簡略化されます。複数のデバイスでテストを実行するには、 Spoon の使用を検討してください。
以下に例を示します。ボタンをクリックすると、アクティビティにHello Worldが表示されます-
public class HelloWorldActivityTest extends
ActivityInstrumentationTestCase2<HelloWorldActivity> {
private HelloWorld activity;
public HelloWorldActivityTest() {
super(HelloWorldActivityTest.class);
}
public void testShouldRenderGreetingOnButtonClick() {
activity = this.getActivity();
Button button = (Button) activity.findViewById(R.id.btn_greet);
TouchUtils.clickView(this, button);
assertEquals("Hello World!",
((TextView) activity.findViewById(Android.R.id.greeting_text))
.getText());
}
}
編集:回答を投稿してから、状況が変わりました。 MockitoはAndroidを適切にサポートしています。また、テストについては、開発フェーズでJVMの真のスピードを引き出すために、ActivityInstrumentationTestCase2からRobolectricに移行しました。 Androidテストフレームワークは、単体テストではなく、統合テストと機能テストに最適です。
AndroidにTDDを適用するには、 Android Testing Codelab が非常に役立ちます。コードラボでは、テストツールの使用方法とAndroidにTDDを適用する方法を示しています。私はそれを試してみましたが、非常に役に立ちました。
ボーナス:チェック クリーンアーキテクチャ
Android Testing Support Library は、テスト用の広範なフレームワークを提供しますAndroidアプリ。このライブラリは、アプリのテストコードをすばやくビルドして実行できる一連のAPIを提供します。 JUnit 4および機能ユーザーインターフェイス(UI)テストを含みますAndroid Studio IDEまたはコマンドラインからこれらのAPIを使用して作成されたテストを実行できます。
続きを読む:
ありがとうございました :)
我々は持っています
https://developer.Android.com/training/testing/start/index.html
ローカル(JVMで実行)および機器テスト(デバイスまたはエミュレータで実行)をテストできる
このために追加する必要があります
Android Testing Support Library
Android SDKには、機能レベルのアプリテスト用の2つのツールが含まれています
猿と猿