20

Robolectric テスト プロジェクトのセットアップはありますが、これらのテストをデバイスでも実行して、JVM と Dalvik の実装の違いに影響されないことを確認したいと考えています。

Robolectric テストとは異なり、これらのテストは頻繁には実行しません。私の懸念は、テスト スイートを維持する労力がほとんどなく、実際のデバイスの機能を検証することです。

それを行う最善の方法は何ですか?


私が現在持っているもの:

テスト ケース TestPackage としての私の robolectric テスト プロジェクト。テスト ケース TestRoboOnAndroid を使用して Android テスト プロジェクトを作成しました。TestPackage を作成し、TestPackage 内の各テストのテストを行います。

現在、robolectric スイートにテストを追加するたびに、手動でデバイス スイートに追加する必要があります。リフレクションで自動的にそれを行う方法はありますか?

また、Robolectric は JUnit 4 (デフォルト) を使用し、Android は JUnit 3 を使用します。そのため、すべての Robolectric テストを JUnit 3 スタイル (junit.frameworkの代わりにからインポートorg.junit) を使用して作成する必要があります。

4

3 に答える 3

12

Robolectric の要点は、デバイス上で実行することではなく、設計はそれに基づいています。デバイスで何かを実行したい場合は、SDK またはRobotiumのデフォルトのインストルメンテーション テストを参照してください。

JVM で Robolectric テストを実行し、さらに、デバイス固有の相互作用 (スクリーンショットの作成、ハードウェアの違いなど) に依存する Robotium テストを作成し、すべてを 1 つのビルドにまとめてデバイスとエミュレーターで実行することは完全に実行可能です。

これを行う最も簡単な方法は、Android Maven Pluginを使用することです。

于 2011-10-14T19:31:04.057 に答える
2

私は階層化されたシステムを使用していますが、可能な場合は以前の階層を好みます。

  • 純粋な単体テスト。できるだけ多くのコードを Android API から完全に独立させ、任意の JVM で実行できる「純粋な」単体テストを使用するようにしています。これらのテストは最速であり、Android 固有の移植性を必要としないコードを維持するのに役立ちます。

  • Robolectric がサポートする単体テスト。私のコードが Android API にわずかしか依存していない場合は、Robolectric シャドウで満たすことができますが、Robolectric でテストします。純粋なテストに比べて Robolectric のセットアップ時間は少し長くなりますが、それでもエミュレーターで起動/実行するよりは高速です。

  • Android フレームワークのテスト。Robolectric がそれをカットしない場合 - 影が存在しないため、または Android API を頻繁に使用している (したがって、本物に対してテストしたい) ため、エミュレーター/デバイスで実行するテストを作成します。デフォルトのフレームワーク。

層のポイントは、物事をできるだけシンプルに保つことです。これにより、完全なスイートが高速に保たれ、よりクリーンなコードが促進されます。

于 2014-07-17T10:40:16.883 に答える
0

JVM に対する単体テストには Robolectric を使用し、Dalvik に対するシステム テストには Calabash-Android を使用します。どちらも Jenkins CI ビルドに統合でき、2 つのツール間ですべてのベースをカバーしていると感じています。

于 2014-07-16T13:26:19.753 に答える