問題タブ [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.
android - Android は Ant から Robolectric 単体テストを起動しますか?
私は Robolectric と Ant または Maven を統合するのにかなりの時間を費やしてきましたが、Ant は Android SDK に近いため少し好ましいです。
すべてが日食内から機能します。Robolectric リンクと単体テストは実行されますが、コマンド ラインからテストを実行してビルドしようとすると、うまくいかないようです。
実際の Robolectric サンプル アプリケーションを使用して、maven ビルドと ant ビルドの両方を実行しようとしました。
ant でのビルドは成功しますが、テストはすべて失敗します。
Maven 出力
蟻テスト出力
サンプルのコンパイルとリンクはうまくいっているように見えますが、まだ多くのテストの失敗があります。これらのサンプルが適切に機能している場合、これらのサンプルは 100% 成功するはずです。
内部の謎に光を当てることができる人はいますか? ビルド スクリプトに junit と robolectric テストを含めることはできますか、それとも Android ビルド システムが数か月前にこれらの変更を行って以来、これは適切にサポートされていないものですか。
android - Robolectric と ANT を使用したテスト
継続的なビルド環境で Robolectric をセットアップする作業を行っていますが、すべてのセットアップに問題があります。
私の Android Eclipse プロジェクト構造は、Robolectric の「Eclipse のクイック スタート」クイック ガイドで説明されているように、Android プロジェクトと JUnit4 テスト プロジェクトで構成されています。サンプル テストは Eclipse 内から正常に動作しますが、ant でもテストできるようにする必要があります。これをサポートするには、ANT build.xml をどのようにビルドすればよいですか? また、Eclipse テスト プロジェクトで行ったのと同じ変更をどのように適用すればよいですか?
RobolectricSample プロジェクトの build.xml ファイルを調べてきましたが、これは、プロジェクトの src フォルダーの下にある運用コードとテスト コードの両方を含む単一のプロジェクトで構成されています。これはmavenが物事を(???)と仮定する方法であることは理解していますが、ANTのみに行きたいと思います。
android - Androidのデータベースを使用したロボエレクトリック
データベースをロボエレクトリックでテストしようとした人はいますか? データベースを作成するためにコンテキストを渡す必要がありますが、それを注入する方法がわかりません!
ありがとう!
java - Robolectric の SharedPreferences のテスト データの提供
Robolectric を使い始めたばかりですが、私が必要としているものはほとんどないようです。ただし、SharedPreferences の使用に関しては、ちょっとした障害にぶつかりました。
私は2つのテストケースを持っています
アクティビティには新しい/空の sharedPreferences が必要です
アクティビティは、すでに一部のデータが含まれている sharedPreferences を想定しています
テスト ケース 1 の場合、テストは期待どおりに合格しているため、すべて問題ありません:)
ただし、テスト ケース 2 では、Robolectric に偽のデータを提供する適切な方法を見つけられないように思われるため、アクティビティはこの偽のデータにアクセスできます。
非常に一般的なユースケースのように感じますが、どうすればいいのかわかりません!
unit-testing - IntelliJ で Robolectric をセットアップするにはどうすればよいですか?
hereに指示があることは知っていますが、まったくわかりません。ANT を使用して構築された既存のプロジェクトがあるため、Mavenized ではなく、ゼロから始めたわけでもありません。これで問題が発生したのは私だけではないと確信しているため、スクリーンショットを使用した素晴らしいチュートリアルは素晴らしいでしょう.
android - RoboGuice + Robolectric を使用した RadioGroup のテストに問題がある
私はこれをさまざまな方法で見てきましたが、私が残したわずかな髪で、誰かがすでにこれを試したことを願ってそこに出すと思いました.
Roboguice 対応アクティビティの Robolectric テストを作成しようとしています。具体的には、RadioGroup の動作を保証するテストを作成しようとしています。
問題は、テストの実行時に、RadioGroup が RadioGroup のように動作せず、一度に 1 つの RadioButton をチェックするという動作を強制することです。グループ内の 3 つのボタンすべてを一度にチェックできることは、Asserting とデバッガーの両方で確認できます。
RadioGroup は非常に単純です。
次に、アプリを実行するものを指摘する必要があります。動作は私が期待するものです(ラジオボタンのいずれかをクリックすると、その1つだけがチェックされたままになり、他の2つはチェックされません)。したがって、理論的には、このテストに合格する必要があります。
しかし、何が起こるかというと、最後のアサーションが失敗し、デバッガーは whenToday の最初のボタンがチェックされたままになっていることを確認します。
完全なテストクラスは次のとおりです。
私はこれを私が考えることができるあらゆる方法で試しました。何かばかげたことをしている、または基本的な概念が欠けているような気がします。助けてください!
アンドリュー
java - Robolectric印刷ログまたはコンソールメッセージ
Robolectricを使用して小さなテストを作成しました。問題があります-テストコンソールにメッセージが書き込まれません。テストされたコードには、次のようなコードがたくさんあります
また
とにかく、出力はありません。
java - Robolectric + Roboguice を使用すると、ログ出力はどこに書き込まれますか?
Robolectric を使用して Android をテストしています。私はMavenを介してテストを実行しています。
次のようなログに書き込むコードがある場合
またはRoboguiceの使用Ln
Maven の Surefire ログ (テキスト ファイル) に出力がありません。
理想的には、実際には単純なログ ステートメントをコンソールに出力したいと考えています。を使用してコンソールに書き込むことができますSystem.out.println("blah")
が、もちろん、サポートされているログ API を使用したいと思います。
私の質問は、ログ出力がまったく表示されないのはなぜですか? また、ログ メッセージをコンソールに書き込むにはどうすればよいですか?
android - JNI ライブラリをロードする Application オブジェクトの Robolectric タンク。回避策はありますか?
私の Android アプリのApplication
オブジェクトは JNI ライブラリをロードしますが、Robolectric はそれを好まないようです。テストを実行すると、Robolectric が異常終了し、次のスタック トレースが表示されます。
java.lang.UnsatisfiedLinkError: java.lang.Runtime.loadLibrary0(Runtime.java:823) の java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758) の java.library.path に cperryinc-jni がありません.System.loadLibrary(System.java:1045) at com.cperryinc.application.MoolaApplication.(MoolaApplication.java:24) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class. java:169) com.xtremelabs.robolectric.internal.ClassNameResolver.safeClassForName(ClassNameResolver.java:36) で com.xtremelabs.robolectric.internal.ClassNameResolver.resolve(ClassNameResolver.java:15) でcom.xtremelabs.robolectric.ApplicationResolver.resolveApplication(ApplicationResolver.java:28) の .newApplicationInstance(ApplicationResolver.java:71)。com.xtremelabs.robolectric.RobolectricTestRunner.createApplication(RobolectricTestRunner.java:483) com.xtremelabs.robolectric.RobolectricTestRunner.setupApplicationState(RobolectricTestRunner.java:360) com.xtremelabs.robolectric.RobolectricTestRunner.internalBeforeTest(RobolectricTestRunner.java:299) .robolectric.RobolectricTestRunner.methodBlock(RobolectricTestRunner.java:277) org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) org. junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) で org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) で org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) org.junit.runners.ParentRunner で。runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners .ParentRunner.run(ParentRunner.java:236) at org.junit.runner.JUnitCore.run(JUnitCore.java:157) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76) at com.intellij. rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:182) で com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) でcom.intellij.rt.execution.application.AppMain.main(AppMain.java:120) での sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) org.junit.runner.JUnitCore.run(JUnitCore.java:157) で com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76) で com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter) .java:182) で com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java) :39) com.intellij.rt.execution.application.AppMain.main (AppMain.java:120) でjunit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) org.junit.runner.JUnitCore.run(JUnitCore.java:157) で com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76) で com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter) .java:182) で com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java) :39) com.intellij.rt.execution.application.AppMain.main (AppMain.java:120) でParentRunner$2.evaluate(ParentRunner.java:184) の org.junit.runners.ParentRunner.run(ParentRunner.java:236) の org.junit.runner.JUnitCore.run(JUnitCore.java:157) の com.intellij。 junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76) com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:182) com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter. java:62) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) で com.intellij.rt.execution.application.AppMain.main(AppMain.java: 120)ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.junit.runner.JUnitCore.run(JUnitCore.java:157) at com.intellij. junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76) com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:182) com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter. java:62) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) で com.intellij.rt.execution.application.AppMain.main(AppMain.java: 120)junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76) com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:182) com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter. java:62) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) で com.intellij.rt.execution.application.AppMain.main(AppMain.java: 120)junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76) com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:182) com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter. java:62) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) で com.intellij.rt.execution.application.AppMain.main(AppMain.java: 120)com.intellij.rt.execution.application.AppMain.main (AppMain.java:120) で (NativeMethodAccessorImpl.java:39) を呼び出すcom.intellij.rt.execution.application.AppMain.main (AppMain.java:120) で (NativeMethodAccessorImpl.java:39) を呼び出す
これについて何ができるか正確にはわかりません。回避策に関するアイデアはありますか?