問題タブ [robolectric]

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 投票する
2 に答える
1407 参照

java - Maven + Robolectric、リソースが見つかりませんか?

最近、TA 用の robolectric を使用して、Android 用のデモ アプリを作成しています。プロジェクトを実行できますが、テストを追加すると、次のようなエラーが表示されます。

テストファイルは次のとおりです。

pom.xml は次のようになります。

私はそれを解決する方法を本当に知りません。奇妙なパスが「/Users/majie/Downloads/android-sdk-macosx/platforms/android-9/data/res/values」である理由がわかりません。どこに設定すればいいのか、どうすれば正しく設定できるのかわかりません。

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

android - Robolectric、リスト項目をクリックする際の問題

私はこの問題に少し苦労してきましたが、Robolectric について基本的なことを理解できていないと思います。通常、いくつかの Google 検索は、この種の問題の根底に到達するのに役立ちますが、それとサンプル コードを見ている間に、何の役にも立ちません。

リスト ビュー アイテムのクリックをエミュレートし、クリック後にアクティビティが起動されることを確認しようとしています。私がテストしている現在のアクティビティが結果のアクティビティであることを繰り返し得ています。リスト項目のクリック コードをすべて削除して、結果のアクティビティを確認したところ、これがテスト中の InstallationListActivity として返されました。そのため、リスト ビュー アイテムがクリックされていないという結論に達しましたが、その理由はわかりません。以下のテスト コードで設定したシステム ログは、予想される値です。リストは 13 項目で、getChildAt(0) はヘッダーを返します。最初のアイテム (getChildAt(1)) を取得し、それまたはその子テキスト ビューで performClick を呼び出すと、予想されるアクティビティが開始されると思いますが、そうではないようです。ともかく、

リストビューを構築するために使用しているレイアウトは次のとおりです。

リストを初期化するコードは次のとおりです。

どんな助けでも大歓迎です!ありがとうございます!

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

android - Robolectric: ロケールを en-US または fr に指定して文字列の書式設定をテストする方法は?

テストでは、英語とフランス語で文字列の書式設定をテストしたいと考えています。Robolectric でロケールを指定するには?

この投稿の方法は機能しません: Android でプログラムによって言語を変更する

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

android - Android の Robolectric: イベントのテスト?

Robolectric を使用していくつかのテストを作成しましたが、実際のテスト クラスを実行したいと考えています。

私が気づいたことの 1 つは、onCreate、onLocationChanged などのイベントをテストできないことです。

イベントをテストするための標準的な方法は何ですか?

イベント内のコードを抽出してメソッドに配置する必要がある場合、イベントはメソッドを呼び出し、robolectro もメソッドを呼び出すことができます。もちろん、メソッドはパブリックである必要がありますよね?

また、通常はプライベート変数であるメソッド内で何かをテストしたい場合は、パブリックゲッターを追加する必要がありますよね? これをrobolectricから確認できますか?

データを robolectric に公開するより良い方法はありますか?

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

android - Robolectric:ShadowApplication?

私はstackoverflowとgoogleを介していくつかのコードでShadowApplicationへの参照をたくさん見ていますが、それが何をするのかわかりません。

いくつかのドキュメントリソースが不足しているかどうかはわかりませんが、適切なリソースを提供できません。javadocapiもあまり説明していません。

誰かがShadowApplicationに関する詳細情報を提供できますか?トレーニング、チュートリアルなどのリソースは他にありますか?

ShadowApplication以外の多くのものが欠けていると確信しています

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

android - Robolectric と IntentServices

Robolectric を使用して、応答としてインテントをブロードキャストする IntentService をテストするにはどうすればよいでしょうか?

次のクラスを想定しています。

私のテストケースでは、次のようなことをしようとしています:

MyService は、このアプローチを使用して開始されることはありません。私は Robolectric に比較的慣れていないので、明らかな何かが欠けている可能性があります。startService を呼び出す前に、何らかのバインディングを行う必要がありますか? コンテキストで sendBroadcast を呼び出すだけでブロードキャストが機能することを確認しました。何か案は?

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

android - Robolectric で Android アプリをテストするときに、カスタム属性に関連するクラッシュを回避するためにシャドウ クラスを作成するにはどうすればよいですか?

カスタム ウィジェットをプロジェクトに統合しています。カスタム属性を使用しており、Robolectric をクラッシュさせています。私が収集したところによると、カスタム属性はまだサポートされていません。注: コンストラクターは、構築時に例外をスローするため「敵対的」ですが、今のところコメントアウトしています。

クラッシュログ

java.lang.RuntimeException: com.xtremelabs.robolectric.res.ViewLoader.inflateView(ViewLoader.java:106) で com.xtremelabs.robolectric.res.ViewLoader.inflateView(ViewLoader.java:82) でのレイアウト/メインの膨張エラーcom.xtremelabs.robolectric.res.ViewLoader.inflateView(ViewLoader.java:86) で com.xtremelabs.robolectric.res.ResourceLoader.inflateView(ResourceLoader.java:377) で com.xtremelabs.robolectric.shadows.ShadowLayoutInflater.inflate( ShadowLayoutInflater.java:43) で com.xtremelabs.robolectric.shadows.ShadowLayoutInflater.inflate(ShadowLayoutInflater.java:48) で android.view.LayoutInflater.inflate(LayoutInflater.java) で com.xtremelabs.robolectric.shadows.ShadowActivity.setContentView (ShadowActivity.java:101) com.blah.MainActivity の android.app.Activity.setContentView(Activity.java) で。org.junit.internal の com.blah.MainActivityTest.setUp(MainActivityTest.java:29) の onCreate(MainActivity.java:17) org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.ジャワ:27)internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)

原因: java.lang.ClassCastException: com.blah.support.shadows.ShadowMultiDirectionSlidingDrawer は、com.xtremelabs.robolectric.Robolectric.shadowOf(Robolectric.java:857) で com.xtremelabs.robolectric.shadows.ShadowView にキャストできません。 .xtremelabs.robolectric.shadows.ShadowViewGroup.addView(ShadowViewGroup.java:70) で android.view.ViewGroup.addView(ViewGroup.java) で com.xtremelabs.robolectric.shadows.ShadowViewGroup.addView(ShadowViewGroup.java:60) でcom.xtremelabs.robolectric.res.ViewLoader$ViewNode.addToParent(ViewLoader.java:217) の android.view.ViewGroup.addView(ViewGroup.java) com.xtremelabs.robolectric.res.ViewLoader$ViewNode.create(ViewLoader. java:180) com.xtremelabs.robolectric.res.ViewLoader$ViewNode.inflate(ViewLoader.java:150) で com.xtremelabs.robolectric.res.ViewLoader$ViewNode.inflate(ViewLoader.java:153) at com.xtremelabs.robolectric.res.ViewLoader.inflateView(ViewLoader.java:102) ... 29 もっと見る

このウィジェットのテストはあまり気にしないので、この問題を回避しようとしています。基本的に、テストがクラッシュしないようにし、ビュー要素が画面に表示されていることを確認したいと考えています。

誰かがJavaファイルをAndroidパッケージに配置するハックを提案しましたが、それが私の場合に当てはまるかどうかはわかりません. この回答で示唆されているように、カスタム ウィジェットは、私の com.blah 構造と並行するパッケージ「android」に存在します。

敵意の問題を回避するために、ウィジェットの影を作成しました (ただし、現在は、例外のスローをコメントアウトしているだけです)。Robolectric が正しく報告しない属性に依存しているため、コンストラクターで行われていた作業をバイパスしたかったのです。シャドウ コンストラクターが呼び出されますが、通常のコンストラクターの実行を続行します。追加の建設を回避する方法はありますか?

ShadowClass

カスタム テスト ランナー

テスト フレームワークがこれをサポートするまで、これはクラッシュを回避するための正しいアプローチですか? 私は私の影に何か間違ったことをしていますか、それとも何か他のものを見逃していますか?

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

android - Robolectric HTTPテストはNoSuchMethodErrorで失敗します:org.apache.http.impl.client.DefaultRequestDirector

RobolectricテストフレームワークのHTTPレイヤーを使用してHTTP呼び出しをテストしようとしています。

私のテストクラスはすでにRunWith(RobolectricTestRunner.class)で注釈が付けられています。HTTPテストケースの例を次に示します。

このテストは失敗し、JUnit障害トレースは次のDefaultRequestDirector例外(sendRequest()呼び出しから発生)を報告します。

Apacheクラスが例外をスローする原因となる可能性のあるアイデアはありますか?

現在の最新のライブラリであるrobolectric-1.2-20120730.165026-113-jar-with-dependencies.jarを使用します。

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

android - Robolectric:ormliteを使用したテスト

ロボレクトリックを使用してORMLiteDAOをテストしようとしていますが、データベースの動作は、Androidアプリから使用した場合と同じではありません。私のDAOはAndroidアプリケーションで完全に機能しています。

ロボレクトリックシャドウとデバッグコードについて読んで、ShadowSQLiteOpenHelperここにコード)に遭遇しました。

このシャドウがormlitedaosをテストするのに十分かどうか誰かが知っていますか?または、それを実現するために独自のシャドウを作成する必要がありますか?ここに手がかり/ヒント/提案/例はありますか?

前もって感謝します。


追加情報:

試験方法:

このテストの実行中に発生した問題のいくつか:

  • 「camelCased」プロパティ名を持つエンティティのクエリエラー:テストの最後の行でスローされたエラー(関連する問題)。このようなAndroidアプリの実行で問題が発生したことはありません。
  • キャメルケースの問題を回避するためにこれらのプロパティ名の1つを変更したとき(たとえば、isEnabledenabled)、以前のエラーが持続しました...メモリデータベースがエンティティに加えた変更を適用しなかったようです。

使用したバージョン:

  • Robolectric 1.1
  • OrmLite 4.41
0 投票する
1 に答える
578 参照

android - Robolectric でテストしても SparseIntArray が変化しない

私は初めてでRobolectric、単純なゲッター/セッターコードを単体テストしようとしていますがSparseIntArray、テスト時に期待どおりにRobolectric機能していないようで、単に変更されていません。(私は常に get メソッドで「0」を取得します)。

また、それ自体に静的ゲッターを追加しようSparseIntArrayとしましたが、セッターを呼び出した後、配列サイズが 0 であることがわかりました。

ここで何が欠けていますか?

これは私がテストしようとしているコードです:

これがテストです: