私はAndroidに基づいたライブラリプロジェクトAndroidユーティリティクラスのみ(アクティビティなし)を含むビットマップクラス(AndroindLibと呼びます)を作成しています。テストしましたAndroid JUnitを使用しているが、AnroidLib.apkが見つからないと不平を言っている
単体テストの正しい方法は何ですかAndroid Library Project?
引用 ドキュメント :
「ライブラリプロジェクトのコードとリソースでテストをセットアップする方法として、次の2つの推奨方法があります。
ライブラリプロジェクトに依存するアプリケーションプロジェクトをインスツルメントするテストプロジェクトを設定できます。その後、ライブラリ固有の機能のテストをプロジェクトに追加できます。
ライブラリに依存する標準アプリケーションプロジェクトをセットアップし、そのプロジェクトにインスツルメンテーションを配置できます。これにより、テスト/計装とテストするコードの両方を含む自己完結型のプロジェクトを作成できます。
テストプロジェクトでは、ライブラリのパッケージと同じになるようにパッケージ名を変更するだけです。たとえば、パッケージが"com.example.lib"
であるライブラリがあります。ライブラリを対象とするテストプロジェクトを作成します。マニフェストファイルには、package="com.example.lib.test"
とtargetPackage="com.example.lib"
が表示されます。パッケージを「com.example.lib.test」から「com.example.lib」に変更するだけです(targetPackage
そのままにします)。
また、ライブラリがテストプロジェクトを参照していることを確認してください[〜#〜] not [〜#〜] in Java build path、but asいつものように= Android library:Eclipseでは、Project->Properties->Android
タブではライブラリとして表示する必要がありますが、Project->Properties->Java Build Path
タブではnotとして表示する必要があります。
次に、テストを実行します。
http://www.paulbutcher.com/2010/09/Android-library-project-with-tests-step-by-step/ CommonsWareの答えの2番目の提案を実装するために必要なプロセスの説明に役立ちます
ドキュメント :
ライブラリモジュールのテストは、アプリのテストと同じです。主な違いは、ライブラリとその依存関係がテストAPKの依存関係として自動的に含まれることです。つまり、テストAPKには独自のコードだけでなく、ライブラリのAARとそのすべての依存関係も含まれます。個別の「テスト中のアプリ」がないため、androidTestタスクはテストAPKのみをインストール(およびアンインストール)します。複数のマニフェストファイルをマージする場合、Gradleはデフォルトの優先順位に従い、ライブラリのマニフェストをテストAPKのメインマニフェストにマージします。
注:このソリューションは、Eclipse Indigo(3.8.2)の使用に基づいており、別のIDEに対して少し異なる実装が必要になる場合がありますが、基本原則は同じです。
私は同様の問題を抱えていましたが、次のことが常に機能することがわかりました:
(注:これらの手順は、新しいプロジェクトグループをゼロから構築するためのものです。プロジェクトグループの一部を既に構築している場合は、プロジェクトを変更する必要があります。同じように接続するように。)
次のような3つのプロジェクト(Androidライブラリ、Androidテストアプリ、Androidライブラリテスター)になります。
Androidライブラリをテストするためのクラスは、次のようになります。
package danny.remington.remington_Android_tools_test_app.test;
import Android.test.ActivityInstrumentationTestCase2;
import danny.remington.remington_Android_tools_test_app.TestActivity;
/**
*
*/
public class TestActivityTest extends
ActivityInstrumentationTestCase2<TestActivity> {
public TestActivityTest() {
super(TestActivity.class);
}
}
その後、必要なテストを追加できます。 Android特定のコンポーネント(Assetsフォルダーなど)へのアクセスが必要な場合を除き、テストを実行するためにAndroidテストアプリ(この例では「RemingtonAndroidToolsTestApp」)をさらに参照する必要はありません。 Android固有のコンポーネントにアクセスする必要がある場合は、Androidテストアプリ(この例では「RemingtonAndroidToolsTestApp」)を変更し、標準のAndroid Junit API。 (詳細についてはこちらをご覧ください: http://developer.Android.com/tools/testing/testing_Android.html )
ユーティリティクラスがAndroid特定のコードに依存していない場合は、標準のJUnit単体テストを使用できます。Androidバージョンを使用する必要はありません。