問題タブ [android-instrumentation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4294 参照

android - startInstrumentation() を使用してインストルメンテーションを起動すると、UiDevice.getInstance(getInstrumentation()) が (Null オブジェクト参照として) クラッシュします。

Android SDK: 22 (L) UiAutomator バージョン: 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'

ボタンをクリックすると、Android アプリケーションからインストルメンテーションにアクセスしようとしています。

start の値は、起動されたことを示す「true」を示します

問題は次のとおりです。インストルメンテーションが開始され、setUp() が呼び出されると、以下が実行されると、クラッシュが発生します。

クラッシュの詳細:

注: コマンド ラインから実行しても問題はありません (am instrument -w com.automation.vzw.sanity.test/android.test.InstrumentationTestRunner)。

これを克服するために助けてください

ありがとう

0 投票する
2 に答える
16966 参照

android-studio - Android Studio -- インストルメンテーション テスト用のアプリケーション データをクリアする

adbコマンドを手動で実行せずに、インストルメンテーション テストの前に Android Studio (AndroidJunitRunner) にアプリケーション データをクリアさせるにはどうすればよいですか?

私はその種のチートを発見しましたandroid.support.test.runner.AndroidJUnitRunner- それは決して実際に呼び出しconnectedCheckたりconnectedAndroidTest.

  1. コマンドラインから実行する場合$ gradle connectedCheck

    /li>
  2. インストルメンテーション テスト構成をクリックして IDE 内から実行する場合 (赤/緑の矢印が付いた緑の Android ロボット ロゴ)

    ご覧のとおり、最後のgradleターゲットはassembleDebugTest

インストルメンテーション テストを開始する前に、メイン アプリのデータをクリアするためconnectedCheckのフックを追加しました。build.gradle

別の方法として、メイン アプリに「データのクリア」ボタンを実装し、インストルメンテーション アプリに UI をクリックさせることもできますが、その解決策は望ましくないと思います。

AndroidJUnitRunnerAPIを調べたところ、Runlistenerインターフェイスを介したフックがありますが、フックはテスト アプリのコンテキスト中、つまりデバイス上で実行されており、Android はあるアプリが別のアプリを変更することを禁止しています。 http://junit.sourceforge.net/javadoc/org/junit/runner/notification/RunListener.html

Android Studio 内から次のいずれかを自動的にトリガーするのを手伝っていただければ、ベストアンサーになります。

  • コマンドラインを実行しadb shell pm clear my.main.app.package
  • またはできれば私のgradleタスクを呼び出すclearMainAppData

別の方法があれば、私もすべての耳です。確かに、デバイス テストの自動化により、アプリケーション データをクリアする明確な方法があるはずですか?

ありがとうございました!

0 投票する
4 に答える
3673 参照

android - 「java.lang.NullPointerException」が原因でインストルメンテーションの実行に失敗しました

でテスト クラスを拡張して、アプリのアクティビティのユニット テスト ケースを作成しようとしていActivityUnitTestCaseます。以前はテスト ケースを正常に実行できましたが、実行中に常に例外が発生します。の処理にはかなり慣れていますがNullPointerExceptions、これを引き起こしている問題を理解できませんでした。似たような質問がなかったので投稿させていただきます。

スタック トレースは、コードのこの行に null オブジェクト参照があることを示しています

しかし、startActivityメソッドは、私がテストしているアクティビティのインスタンスを取得することになっています。null を返す理由がわかりません。

これがスタックトレースです。

ここにテストクラスがあります

0 投票する
1 に答える
190 参照

button - Android インストルメンテーション: ボタンのクリックをシミュレートする必要があります

唯一の問題は、ボタンが com.android.systemui パッケージにあるということです。USB経由でadbを許可するためにユーザーが押さなければならないのはOKボタンです。タッチスクリーンが機能せず、USB マウスを介して電話を制御しているため、[OK] ボタンをクリックしてデバッグを有効にすることができません (ルート化されていない電話)。インストルメンテーション apk でできると思っていたのですが… 困ったことが。

私が取った別のアプローチは、systemui の証明書を使用してインストルメンテーション .apk に署名することです。ただし、それは失敗 [INSTALL_FAILED_INVALID_INSTALL_LOCATION] につながるだけです。

それで、そのボタンをクリックする方法はありますか?

0 投票する
0 に答える
261 参照

java - androidTest 中に onCreate() が呼び出される前にアプリケーションにアクセスする

MyApplicationクラス (extends Application) は、起動時に値をチェックするサービスを起動しSharedPreferenceます。値が の場合、false一部のデータが初期化されます。

テスト目的で、データの初期化が行われないようにこれSharedPreferenceを変更したいと思います。trueただし、これを行うと、競合状態が発生しMyApplication.onCreate()、設定を変更する前に が呼び出されます。

MyApplication.onCreate()が呼び出される前に設定を変更するにはどうすればよいですか? このようなことは可能ですか?

MyApplication.java

SearchFragmentTest.java (src/androidTest フレーバー)

0 投票する
4 に答える
4949 参照

android - Android Studio での計測テスト

Android Studio で簡単な計測テストを実行しようとしましたが、成功しませんでした。Unit Testsのガイドに従ったところ、問題なく動作しました。さて、モック化が難しいコンポーネントをテストしたいと思います。インストルメント化されたテストのガイドに従うと、依存関係エラーが発生します。

私がしたこと:

  • Android Testing Support Library (Android Support Repository、rev 17) をインストールします。

  • src にディレクトリ androidTest を作成します。「test」で終わる Java フォルダー + パッケージを追加します。

  • 簡単な Test クラスを追加する
  • 簡単な TestSuit を追加します。
  • gradle ファイルを変更して依存関係を追加します。

行を追加しただけです。androidTestCompile 'junit:junit:4.12'そうしないと、注釈@RunWith(AndroidJUnit4.class)が認識されませんでした。テストを起動すると、Gradle ビルド エラーが 1 つ発生します。

エラー:タスク ':app:dexDebugAndroidTest' の実行に失敗しました。

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: プロセス 'command '/usr/lib/jvm/jdkoracle/bin/java'' がゼロ以外の終了値 2 で終了しました

なにか提案を ?テストライブラリについて何か見逃しましたか?

ありがとうございました

0 投票する
1 に答える
237 参照

android - Dynatrace 対応 apk にアップグレードできない

Android apk ファイルで auto-instrumentor コマンドを使用しました。

3 つの新しいファイルが生成されました。

  1. 無署名
  2. 署名済み
  3. 最後の

これで、新規インストール時にアプリを使用できるようになりました。

しかし、以前のビルドをこの Dynatrace 対応バージョンにアップグレードしようとすると、常にメッセージが表示されます

0 投票する
1 に答える
280 参照

android - Async Task - Android Instrumentaion Unit testing - Exception - Only thread created can update the asynctask

This is my Asnyc task class

Im trying to test my Async task from test class

Find my class below. public class MainActivityTest extends ActivityInstrumentationTestCase2 {

When running the test case , This line throws exception - Only the created thread can update the Async task

But running the test when my phone is locked, I dont get exception and works fine.

How can i fix this issue.