問題タブ [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.
testing - エスプレッソは、選択したスピナー テキストに一致します
こちらの回答に従って、特定のスピナーテキストが選択されているかどうかを確認してみます。スピナーがダイアログに表示されるので、試しました:
ただし、これは機能せず、次のエラー メッセージが表示されます。
android.support.test.espresso.base.DefaultFailureHandler$AssertionFailedWithCauseError: 'テキスト付き: 「サシェ」を含む文字列' が選択したビューと一致しません。予想: テキスト付き: 「小袋」を含む文字列 得た: "AppCompatSpinner{id=2131624039, res-name=package_spinner, visibility=VISIBLE, width=620, height=75, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, root-is- layout-requested=false, has-input-connection=false, x=0.0, y=75.0, child-count=1}"
「is-selected=false」は、見つかったスピナーが選択されていないことを意味しますか? これは、API 18 を使用して実際のデバイス (エミュレーターではない) で実行されています。Espresso の実行中および手動でのテスト中に、スピナーは正しく「サシェ」に設定されています。エスプレッソに問題があるのはなぜですか?
これが関連しているかどうかはわかりませんが、スピナーは次のタイプのオブジェクト用です。
スピナーアダプターは次のようになります。
java - InstrumentationTestCase からの通知の作成
単体テストから、通知がアセットからカスタム サウンドを再生できるかどうかをテストしたいと考えています。このテストは何かを検証するためのものではありません。メインのアプリ コードを乱雑にすることなく、機能を簡単に実証する方法として作成しました。
そこで、テストプロジェクトでは、.wav ファイルを の中に追加しました/res/raw
。通知ビルダーで次の URL を使用します。
その URL は、SO で読んでいる質問に従って機能するはずです。それが機能すると仮定しましょう。
テスト wav ファイルをメイン プロジェクトのフォルダーではなく、テスト プロジェクトのフォルダーに含めたくなかったので、テスト プロジェクトのリソースにアクセスできるように/res/raw
、単体テストを拡張する必要があります。InstrumentationTestCase
コードは次のとおりです。
呼び出しは次のnotify
例外をスローしています:
NotificationManagerService
この例外をクラスまで追跡しました:
どうやら、例外はカスタム サウンドとは何の関係もありませんが、InstrumentationTestCase
.
これをテストする方法はありますか?過去に通知を作成した覚えがありAndroidTestCase
ますが、そうするとテスト wav ファイルにアクセスできなくなります。wav を使用して jar を作成し、その jar をテスト プロジェクトの lib フォルダーにドロップすることもできますが、それではファイルが隠され、他のプログラマーは、将来それを置き換える必要がある場合にそれを探すのに苦労する可能性があります。
android - android インストルメント化テストからの出力はどこにありますか?
私はgradle cCを動作させることができました。私のテストでは、1 行のテキストを印刷してログに記録するだけです。
system.out
とlogging
出力はどこにありますか?
ありがとう
編集:単体テストの出力を見つけました( .../app/build/test-results/にあります)。しかし、他の人にはまだ運がありません。
インストルメント化されたテストからの出力を何らかの形で保存する方法はありますか?
android - Android 6.0 以降のデバイスのログにスプーンのスクリーンショットが表示されない
統合テストを書いている人なら、テストに便利な機能を提供する Spoon と Spoon-Gradle-Plugin について聞いたことがあるはずです。私はstanfy/spoon-gradle-pluginを使用しています。
com.squareup.spoon.Spoon.java
テストでクラスによって提供されるスクリーンショット メソッドを使用しています。コマンドでテストを実行する"./gradlew spoon"
と、各テストのログとスクリーンショットを含む xml ファイルが生成されます。これは、システム バージョンが 6.0 未満の各 Android デバイスで機能します。Marshmallow を使用してデバイスでテストを実行すると、テストの最後にコンソールは次のようになります。
これを見たときに最初に頭に浮かぶのは... Android 6.0以降に変更された許可処理の問題です。だから私が提供すればと思った
WRITE_EXTERNAL_STORAGE
と
READ_EXTERNAL_STORAGE
私のアプリへのアクセス許可は機能するはずです。そこで、SDK のバージョンを検出するこの単純なシェル スクリプトを作成し、バージョンが 23 以上の場合は、テスト開始前にパッケージにアクセス許可を付与します。
権限は付与されているようですが、テスト開始後もデバイスからスクリーンショットを取得できません。
私の2番目の考えはその時です。パーミッションに問題がなければ、取得するスクリーンショットがない可能性があります。そのため、Spoon はテストの終了後にデバイスからスクリーンショットを消去します。私はテストを開始し、それらのいくつかが終了するまで待ってから、コンソールの ctrl+C でプロセスを強制終了しました。Android Device Monitor を開くと、テストのスクリーンショットがプル待ちになっていることがわかりました。それでも起こりません。
だから私の3番目の考えはでした。パーミッションがなく、スクリーンショット機能が 6.0 デバイスで正常に動作する場合は、スプーンの問題である可能性があります。オンラインで同様のトピックを探してみましたが、私のケースに直接関係するものはありませんでした.
この問題を見つけましたが、問題は解決しませんでした。私はUIAutomator
スクリーンショットを撮るのではなく、スプーンのスクリーンショット方法を使用しています。
私が今戦っている問題があると思いますが、提案されたことを実行しましたが、役に立ちませんでした。
そして、4日前にいくつかの修正がありましたが、私はまだ問題に直面しており、私のライブラリは最近のものです:
と
だから...多分私は何かが欠けています。忘れていた別の許可が必要なのかもしれません。どんな提案にも感謝します。
java - Spoon-gradle プラグインを介して特定のパッケージからインストルメンテーション テストを実行する
私はRoman Mazurのspoon-gradle-pluginを使用しています。一度にすべてのテストを実行できますが、起動したいテストの「グループ」を指定するのに問題があります。現在、私のスプーンのセットアップは次のようになっています。
私のテストはパッケージにあります:
そして、私の目標は、spoon に依存する個別の gradle タスクを作成して、各パッケージから個別にテストを起動することです。Roman は、スプーン内のいくつかのプロパティを編集できるパラメーターinstrumentationArgsを提供してくれました。
スプーンのメインgitでわかるように、パッケージを指定できると書かれています。ここで、スプーンランナーがテストを探す必要があり、例は次のようになります。
だから私の考えは、このプロパティをinstrumentationArgsに入れることでした。その結果、次のようなスプーン タスクを作成しました。
私が言えることは、 noAnimations パラメータがデフォルトのスプーン設定を適切に拡張しているため、GIF が作成されないということです。したがって、instrumentationArgs は確かに文字列配列を取得していますが、端末では次のように変更を適用しません。
「パッケージ」プロパティで何をするかはわかりませんが、常に結果を受け取ります:
また、変更したいのですが、方法がわかりません。さらに、プロジェクトの「com.myapp.instrumentation.flowtests」文字列を検索しようとしたと言えますが、それが使用される唯一の場所は、パッケージ内のテスト + 上記の gradle タスクです。したがって、どこにもハードコードされていません。次の方法でテストを開始すると、同じ場所が選択されます。
そして、私が使用した後:
また、テスト セット全体を実行します。
android - インストルメンテーションでアクティビティ コンテンツのインフレが失敗する
プロジェクトでエスプレッソをセットアップしようとしています。
Android Studio (1.5.1) で新しい空のアクティビティ プロジェクトを作成しました。
実行に問題はありません
エスプレッソ構成をプロジェクトとテスト クラスに追加しました。
テストを実行すると、取得しています
ところで、ID はツールバー用です
テストクラスは
gradle.build は
私は何を間違っていますか?