2013-08-26 6 views
20

Robolectricを使用して、this repositoryのメニューボタンをクリックしてテストを設定しようとしています。基本的なRobolectricテストは実行されますが、私はAndroidManifest.xmlが見つからないと言うので、リソースを使ってプロジェクト固有のテストを実行することはできません。 Gradle + Robolectric:org.robolectric.Config.propertiesファイルはどこに置くのですか?

WARNING: No manifest file found at ./AndroidManifest.xml.Falling back to the Android OS resources only. To remove this warning, annotate your test class with @Config(manifest=Config.NONE).

は私が org.robolectric.Config.propertiesファイルを作成する必要があることを示す these instructionsを見つけましたが、私はそれをどこに置くかわからない: ../gradlew clean checkを実行した後、ここにRobolectric HTMLファイルからの標準出力です。私はいたるところで試してみましたが、ファイルを移動しても、エラーメッセージのパスは常に上記と同じです(./AndroidManifest.xml)。これは、ビルドプロセスがファイル org.robolectric.Config.propertiesの設定を決して受け入れたことはないと私に思います。

@Config(manifest = "")指示文も試しましたが、これはcannot find symbolエラーです。 AndroidManifest.xmlを自分のプロジェクトディレクトリに移動すると、パス./res/valuesが見つからないというエラーが表示され、解決できませんでした。何か案は?

アップデート1

おかげオイゲン、私は今@RunWith(RobolectricGradleTestRunner.class)代わりの@RunWith(RobolectricTestRunner)を使用しています。

今、私はまだ以下my BasicTest.java

KeywordList keywordList = Robolectric.buildActivity(KeywordList.class).create().get(); 

の同じ行で発生した、別のエラーを取得するには、標準エラー、標準出力、およびRobolectricテストレポートでは、「失敗したテスト」タブの結果、次のとおりです。

注:最新のRobolectricアップデートであるrobolectric-2.2-SNAPSHOT.jarから構築されたjarに置き換えようとしましたが、まだエラーが発生しました。

標準エラー

WARNING: no system properties value for ro.build.date.utc

標準出力

DEBUG: Loading resources for net.frontlinesms.android from ~/workspace-studio/frontlinesms-for-android/FrontlineSMS/build/res/all/debug... 
DEBUG: Loading resources for android from jar:~/.m2/repository/org/robolectric/android-res/4.1.2_r1_rc/android-res-4.1.2_r1_rc-real.jar!/res... 
INFO: no id mapping found for android:drawable/scrollbar_handle_horizontal; assigning ID #0x1140002 
INFO: no id mapping found for android:drawable/scrollbar_handle_vertical; assigning ID #0x1140003 
INFO: no id mapping found for android:color/highlighted_text_dark; assigning ID #0x1140004 
INFO: no id mapping found for android:color/hint_foreground_dark; assigning ID #0x1140005 
INFO: no id mapping found for android:color/link_text_dark; assigning ID #0x1140006 
INFO: no id mapping found for android:color/dim_foreground_dark_disabled; assigning ID #0x1140007 
INFO: no id mapping found for android:color/dim_foreground_dark; assigning ID #0x1140008 
INFO: no id mapping found for android:color/dim_foreground_dark_inverse_disabled; assigning ID #0x1140009 
INFO: no id mapping found for android:color/dim_foreground_dark_inverse; assigning ID #0x114000a 
INFO: no id mapping found for android:color/bright_foreground_dark_inverse; assigning ID #0x114000b 
INFO: no id mapping found for android:layout/text_edit_paste_window; assigning ID #0x114000c 
INFO: no id mapping found for android:layout/text_edit_no_paste_window; assigning ID #0x114000d 
INFO: no id mapping found for android:layout/text_edit_side_paste_window; assigning ID #0x114000e 
INFO: no id mapping found for android:layout/text_edit_side_no_paste_window; assigning ID #0x114000f 
INFO: no id mapping found for android:layout/text_edit_suggestion_item; assigning ID #0x1140010 

失敗したテスト

android.view.InflateException: XML file ~/workspace-studio/frontlinesms-for-android/FrontlineSMS/build/res/all/debug/layout/rule_list.xml line #-1 (sorry, not yet implemented): Error inflating class net.frontlinesms.android.ui.view.ActionBar 
at android.view.LayoutInflater.createView(LayoutInflater.java:613) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
at org.robolectric.tester.android.view.RoboWindow.setContentView(RoboWindow.java:82) 
at org.robolectric.shadows.ShadowActivity.setContentView(ShadowActivity.java:272) 
at android.app.Activity.setContentView(Activity.java) 
at net.frontlinesms.android.activity.KeywordList.onCreate(KeywordList.java:70) 
at android.app.Activity.performCreate(Activity.java:5008) 
at org.fest.reflect.method.Invoker.invoke(Invoker.java:112) 
at org.robolectric.util.ActivityController$1.run(ActivityController.java:119) 
at org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:256) 
at org.robolectric.util.ActivityController.create(ActivityController.java:114) 
at org.robolectric.util.ActivityController.create(ActivityController.java:126) 
at net.frontlinesms.android.BasicTest.setUp(BasicTest.java:30) 
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) 
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) 
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) 
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:241) 
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) 
at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:177) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:309) 
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:80) 
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:47) 
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69) 
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:49) 
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) 
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) 
at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32) 
at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) 
at com.sun.proxy.$Proxy2.processTestClass(Unknown Source) 
at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:103) 
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) 
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) 
at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:355) 
at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:66) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 
at java.lang.Thread.run(Thread.java:680) 
Caused by: java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_createView(LayoutInflater.java:587) 
at android.view.LayoutInflater.createView(LayoutInflater.java) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_createViewFromTag(LayoutInflater.java:687) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_rInflate(LayoutInflater.java:746) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_inflate(LayoutInflater.java:489) 
at android.view.LayoutInflater.inflate(LayoutInflater.java) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_inflate(LayoutInflater.java:396) 
at android.view.LayoutInflater.inflate(LayoutInflater.java) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_inflate(LayoutInflater.java:352) 
at android.view.LayoutInflater.inflate(LayoutInflater.java) 
at org.robolectric.tester.android.view.RoboWindow.setContentView(RoboWindow.java:82) 
at org.robolectric.shadows.ShadowActivity.setContentView(ShadowActivity.java:272) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.robolectric.bytecode.ShadowWrangler$ShadowMethodPlan.run(ShadowWrangler.java:455) 
at android.app.Activity.setContentView(Activity.java) 
at net.frontlinesms.android.activity.KeywordList.onCreate(KeywordList.java:70) 
at android.app.Activity.$$robo$$Activity_c57b_performCreate(Activity.java:5008) 
at android.app.Activity.performCreate(Activity.java) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.fest.reflect.method.Invoker.invoke(Invoker.java:112) 
at org.robolectric.util.ActivityController$1.run(ActivityController.java:119) 
at org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:256) 
at org.robolectric.util.ActivityController.create(ActivityController.java:114) 
at org.robolectric.util.ActivityController.create(ActivityController.java:126) 
at net.frontlinesms.android.BasicTest.setUp(BasicTest.java:30) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) 
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) 
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) 
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:241) 
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) 
at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:177) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:309) 
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:80) 
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:47) 
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69) 
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:49) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) 
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) 
at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32) 
at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) 
at com.sun.proxy.$Proxy2.processTestClass(Unknown Source) 
at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:103) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
... 7 more 
Caused by: android.view.InflateException: XML file ~/workspace-studio/frontlinesms-for-android/FrontlineSMS/build/res/all/debug/layout/actionbar.xml line #-1 (sorry, not yet implemented): Error inflating class android.widget.ProgressBar 
at android.view.LayoutInflater.createView(LayoutInflater.java:613) 
at org.robolectric.shadows.RoboLayoutInflater.onCreateView(RoboLayoutInflater.java:38) 
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
at net.frontlinesms.android.ui.view.ActionBar.<init>(ActionBar.java:65) 
at android.view.LayoutInflater.createView(LayoutInflater.java:587) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
at org.robolectric.tester.android.view.RoboWindow.setContentView(RoboWindow.java:82) 
at org.robolectric.shadows.ShadowActivity.setContentView(ShadowActivity.java:272) 
at android.app.Activity.setContentView(Activity.java) 
at net.frontlinesms.android.activity.KeywordList.onCreate(KeywordList.java:70) 
at android.app.Activity.performCreate(Activity.java:5008) 
at org.fest.reflect.method.Invoker.invoke(Invoker.java:112) 
at org.robolectric.util.ActivityController$1.run(ActivityController.java:119) 
at org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:256) 
at org.robolectric.util.ActivityController.create(ActivityController.java:114) 
at org.robolectric.util.ActivityController.create(ActivityController.java:126) 
at net.frontlinesms.android.BasicTest.setUp(BasicTest.java:30) 
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) 
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) 
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) 
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:241) 
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) 
at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:177) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:309) 
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:80) 
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:47) 
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69) 
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:49) 
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) 
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) 
at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32) 
at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) 
at com.sun.proxy.$Proxy2.processTestClass(Unknown Source) 
at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:103) 
... 7 more 
Caused by: java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_createView(LayoutInflater.java:587) 
at android.view.LayoutInflater.createView(LayoutInflater.java) 
at org.robolectric.shadows.RoboLayoutInflater.onCreateView(RoboLayoutInflater.java:38) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_onCreateView(LayoutInflater.java:660) 
at android.view.LayoutInflater.onCreateView(LayoutInflater.java) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_createViewFromTag(LayoutInflater.java:685) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_rInflate(LayoutInflater.java:746) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_rInflate(LayoutInflater.java:749) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_inflate(LayoutInflater.java:489) 
at android.view.LayoutInflater.inflate(LayoutInflater.java) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_inflate(LayoutInflater.java:396) 
at android.view.LayoutInflater.inflate(LayoutInflater.java) 
at net.frontlinesms.android.ui.view.ActionBar.<init>(ActionBar.java:65) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_createView(LayoutInflater.java:587) 
at android.view.LayoutInflater.createView(LayoutInflater.java) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_createViewFromTag(LayoutInflater.java:687) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_rInflate(LayoutInflater.java:746) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_inflate(LayoutInflater.java:489) 
at android.view.LayoutInflater.inflate(LayoutInflater.java) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_inflate(LayoutInflater.java:396) 
at android.view.LayoutInflater.inflate(LayoutInflater.java) 
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_inflate(LayoutInflater.java:352) 
at android.view.LayoutInflater.inflate(LayoutInflater.java) 
at org.robolectric.tester.android.view.RoboWindow.setContentView(RoboWindow.java:82) 
at org.robolectric.shadows.ShadowActivity.setContentView(ShadowActivity.java:272) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.robolectric.bytecode.ShadowWrangler$ShadowMethodPlan.run(ShadowWrangler.java:455) 
at android.app.Activity.setContentView(Activity.java) 
at net.frontlinesms.android.activity.KeywordList.onCreate(KeywordList.java:70) 
at android.app.Activity.$$robo$$Activity_c57b_performCreate(Activity.java:5008) 
at android.app.Activity.performCreate(Activity.java) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.fest.reflect.method.Invoker.invoke(Invoker.java:112) 
at org.robolectric.util.ActivityController$1.run(ActivityController.java:119) 
at org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:256) 
at org.robolectric.util.ActivityController.create(ActivityController.java:114) 
at org.robolectric.util.ActivityController.create(ActivityController.java:126) 
at net.frontlinesms.android.BasicTest.setUp(BasicTest.java:30) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) 
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) 
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) 
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:241) 
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) 
at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:177) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:309) 
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:80) 
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:47) 
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69) 
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:49) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) 
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) 
at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32) 
at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) 
at com.sun.proxy.$Proxy2.processTestClass(Unknown Source) 
at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:103) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
... 7 more 
Caused by: java.lang.ClassCastException: org.robolectric.res.AttrData cannot be cast to org.robolectric.res.StyleData 
at org.robolectric.shadows.ShadowAssetManager$StyleResolver.getParent(ShadowAssetManager.java:353) 
at org.robolectric.shadows.ShadowAssetManager$StyleResolver.getAttrValue(ShadowAssetManager.java:336) 
at org.robolectric.shadows.ShadowResources.findAttributeValue(ShadowResources.java:259) 
at org.robolectric.shadows.ShadowResources.attrsToTypedArray(ShadowResources.java:188) 
at org.robolectric.shadows.ShadowResources.access$000(ShadowResources.java:51) 
at org.robolectric.shadows.ShadowResources$ShadowTheme.obtainStyledAttributes(ShadowResources.java:460) 
at android.content.res.Resources$Theme.obtainStyledAttributes(Resources.java) 
at android.content.Context.obtainStyledAttributes(Context.java:374) 
at android.view.View.__constructor__(View.java:3297) 
at org.fest.reflect.method.Invoker.invoke(Invoker.java:112) 
at org.robolectric.shadows.ShadowView.__constructor__(ShadowView.java:68) 
at android.view.View.<init>(View.java:3295) 
at android.widget.ProgressBar.<init>(ProgressBar.java:253) 
at android.widget.ProgressBar.<init>(ProgressBar.java:246) 
at android.widget.ProgressBar.<init>(ProgressBar.java:242) 
at android.view.LayoutInflater.createView(LayoutInflater.java:587) 
at org.robolectric.shadows.RoboLayoutInflater.onCreateView(RoboLayoutInflater.java:38) 
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
at net.frontlinesms.android.ui.view.ActionBar.<init>(ActionBar.java:65) 
at android.view.LayoutInflater.createView(LayoutInflater.java:587) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
at org.robolectric.tester.android.view.RoboWindow.setContentView(RoboWindow.java:82) 
[truncated, hit stack overflow character limit...] 
+0

同じ問題が発生しましたが、これをどのように解決しましたか? –

+0

こんにちは@VinceV。申し訳ありませんが解決策が見つかりませんでした。私はこの仕事を棚上げし、まだ戻ってこなかった。あなたが解決策を見つけたら教えてください。 –

+0

私は同じことをしました。アンドロイドでテストを使うために全力を尽くしていた。しかし、あきらめた。 –

答えて

0

私はあなたがこの従っていることを参照してください。私はRobolectricブログで述べたように、あなたが@RunWith(RobolectricGradleTestRunner.class)

+0

ありがとう、Eugen。私は今、別のエラーを取得しています、 'Error inflating class net.frontlinesms.android.ui.view.ActionBar'に関するものです。 **アップデート1 **の上にすべての出力を投稿しました。 –

+0

私はこのような問題を今すぐ修正する方法を知らないです。 –

+2

Robolectric 3.1.1の時点で、RobolectricGradleTestRunnerは廃止され、代わりにRobolectricTestRunnerを使用する必要があります。出典:https://github.com/robolectric/robolectric/wiki/3.0-to-3.1-Upgrade-Guide –

3

src/test/resourcesパスにあなたの@RunWith(RobolectricTestRunner.class)を変更すべきだと思う https://github.com/square/gradle-android-test-plugin

は、テストでorg.robolectric.Config.propertiesファイルのために働くようですプラグインとRobolectric SNAPSHOTS。 RobolectricGradleTestRunnerは不要です。

1

私はrobolectric gradle pluginを使用していますが、私はASのjunitテストで重大な問題に直面しています。

しかし、一度見つけたものがorg.robolectric.Config.propertiesの場所です。私もソースプロジェクトの多くの場所を試しましたが、ASはそれをbuild/test-classesに入れてから始めました。

あなたはで私のGradleのビルドスクリプトを見て持つことができますで、リストの末尾に

  1. 並べ替え<orderEntry type="jdk" ... />:それをASで実行されているユニットテストを取得するために必要なDebug gradle-based unit tests with IntelliJ/AndroidStudio

    その他の手順<app>.imlファイル(スタブ!!例外を防ぐには、https://github.com/robolectric/deckard-gradleを参照してください) - この手順は、gradleと同期するたびに繰り返す必要があります。

  2. <app>.imlファイルにコンパイル済みのテストファイルフォルダを追加します。 gradlew app:clean app:testDebugまたはそのような何か:あなたはGradleのでアプリをコンパイル

  3. :(Android Studio + Robolectric + Gradle Class Not Found Exception参照)<output url=... />後に直接<output-test url="file://$MODULE_DIR$/build/test-classes" />を追加します。私はASがソースファイルだけをコンパイルすることに気づいたが、何らかの形でテストクラスを少なくとも/buildフォルダにはコンパイルしない。一方、Gradleは、テストクラスを/build/test-classesに適切にコンパイルし、ステップ2)の設定で、ASはコンパイル後にそれらを取り込みます。もちろん、テストクラスを変更するたびに、この手順を繰り返す必要があります。 (注:私はまた、オイゲンから別の解決策を見つけ、以下を参照してください。https://stackoverflow.com/a/24140796/1406325を - 私は1つは、まだ、それはGradleのでコンパイルする余分な工程を必要としないので、やっているように見えることを試していない)

  4. をにあなたのorg.robolectric.Config.propertiesを入れて/build/test-classes(ステップ2以降)ASがこれを取得します。

  5. 他のライブラリへの参照がある場合は、ファイルが必要になる場合があります(テストを実行するときに問題が発生する場合はResources$NotFoundExceptionです)。もう一度、このファイルをどこに置くか?ことができますことを願っています

     
    android.library.reference.1=../../../library/src/main 
    

:それは(https://groups.google.com/forum/#!topic/robolectric/gjpwqRICT5U参照)<app>/src/mainに入ります!

+0

何かをビルドフォルダに入れて保管してください。最初にきれいにすると削除されます –

+0

非常に真実で、維持するのは楽しいものではありません。これは私が見つけた最初のアプローチですが、私はまだ調査中ですが、私はもっと簡単な解決策が見つかった場合にこの回答を更新します...そうでなければ、gradleタスクを修正してそこにファイルをコピーしてくださいテストソースをコンパイルするたびに... – Flo

1

org.robolectric.Config.propertiesにはが入っていますが、src/test/resourcesではありませんでした。

1

最善の方法は、フォルダ内のプロパティファイルを置くと、次のようにパスを指定することにより、RobolectricTestRunnerのサブクラスでgetConfigProperties()をオーバーライドすることである。

@Override 
    protected Properties getConfigProperties() { 
     FsFile fs = Fs.currentDirectory(); 
     InputStream resourceAsStream = null; 
     try { 
      File f = new File(fs.getPath() + <location-to-file-from-root-dir> + <file-name>); 
      resourceAsStream = new FileInputStream(f); 
     } catch (Exception e) { 
      resourceAsStream = null; 
     } 
     if (resourceAsStream == null) return null; 
     Properties properties = new Properties(); 
     try { 
      properties.load(resourceAsStream); 
     } catch (IOException e) { 
      throw new RuntimeException(e); 
     } 
     return properties; 
    } 
6

私は最終的にそれを置くために適切な場所を見つけました。まず、自分のアプリケーションの構成は以下の通りです:私のテストアプリケーションは、あなたがrobolectricとしてプロパティファイルに名前を付ける必要があります

app/src/test/ 

下にある

app/src/main/ 

私のアプリケーションです。プロパティrobolectric.propertiesの内容は、次に

manifest: src/main/AndroidManifest.xml 

ある

src/test/resources/ 

下に置くには、テストプログラムは、最終的には、プロパティファイルを見つけることができます!

+0

robolectric.propertiesはapp/src/test/resourcesまたはsrc/test/resourcesの下にありましたか? – Ahmed

+1

app/src/test/resources – pptang

+1

私は試しましたが、Robolectric ** 3.0 **では動作しませんでした。 –

関連する問題