2013-06-05 1 views
4

Я пытаюсь настроить тестирование с помощью robolectric и roboguice. Я инжектирую и тестирование классов, но когда я пытаюсь проверить деятельность я не могу создавать видовые объекты в тестовой средеRobolectric 2.0 не создает просмотров при тестировании

я получаю следующие ошибки

testAttemptsLoginWhenSignInButtonIsClicked (com.clearc2.HomeActivityTest) Прошлое времени: 2.234 с < < < ОШИБКА! java.lang.RuntimeException: Не удалось создать android.widget.EditText на org.robolectric.res.builder.LayoutBuilder.constructView (LayoutBuilder.java:182) в org.robolectric.res.builder.LayoutBuilder.create (LayoutBuilder.java:109) на org.robolectric.res.builder.LayoutBuilder.doInflate (LayoutBuilder.java:42) на org.robolectric.res.builder.LayoutBuilder.doInflate (LayoutBuilder.java:45) на org.robolectric.res.builder.LayoutBuilder.doInflate (LayoutBuilder.java:45) на org.robolectric.res.builder.LayoutBuilder.doInflate (LayoutBuilder.java:45) в о rg.robolectric.res.builder.LayoutBuilder.inflateView (LayoutBuilder.java:62) на org.robolectric.shadows.ShadowLayoutInflater.inflate (ShadowLayoutInflater.java:50) на org.robolectric.shadows.ShadowLayoutInflater.inflate (ShadowLayoutInflater.java:55) на android.view.LayoutInflater.inflate (LayoutInflater.java) при org.robolectric.tester.android.view.RoboWindow.setContentView (RoboWindow.java:80) на org.robolectric.shadows .ShadowActivity.setContentView (ShadowActivity.java:265) на android.app.Activity.setContentView (Activity.java) на com.clearc2.HomeActivity.onCreate (HomeActivity.java:38) на com.clearc2.HomeActivityTest.setUp (HomeActivityTest .java: 22) в org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall (FrameworkMethod.java:44) в org.junit.internal.runners.model.ReflectiveCallable.run (ReflectiveCallable.java:15) на org.junit.runners.model.FrameworkMethod.invokeExplosively (FrameworkMethod.java:41) на org.junit.internal.runners.statements.RunBefores.evaluate (RunBefores.java:27) на org.junit. internal.runners.statements.RunAfters.evaluate (RunAfters.java:31) на org.robolectric.RobolectricTestRunner $ 2.evaluate (RobolectricTestRunner.java:246) на org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored (Блок JUnit4ClassRunner.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) на org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:42) при org.junit.runners.ParentRunner $ 2.evaluate (ParentRunner.java:184) при org.robolectric.RobolectricTestRunner $ 1. Вычислить значение (RobolectricTestRunner .java: 181) at org.junit.runners.ParentR unner.run (ParentRunner.java:236) в org.apache.maven.surefire.junit4.JUnit4TestSet.выполнить (JUnit4TestSet.java:59) на org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet (AbstractDirectoryTestSuite.java:120) в org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute (AbstractDirectoryTestSuite. Java: 103) в org.apache.maven.surefire.Surefire.run (Surefire.java:169) при org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess (SurefireBooter.java:350) в орг .apache.maven.surefire.booter.SurefireBooter.main (SurefireBooter.java:1021) Вызванный: java.lang.reflect.InvocationTargetException на sun.reflect.NativeConstructorAccessorImpl.newInstance0 (нативный метод) в sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:57) на sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) в java.lang.reflect.Constructor.newInstance (Constructor.java:525) на org.robolectric.res.builder.LayoutBuilder.constructView (LayoutBuilder.java:167) на org.robolectric.res.builder.LayoutBuilder.create (LayoutBuilder.java:109) на org.robolectric.res .builder.LayoutBuilder.doInflate (LayoutBuilder.java:42) at org.robolectric.res.builder.LayoutBuilder.doInflate (LayoutBuilder.java:45) at org.robolectric.res.builder.LayoutBuilder.doInflate (LayoutBuilder.java:45) на org.robolectric.res.builder.LayoutBuilder.doInflate (LayoutBuilder.java:45) на org.robolectric.res.builder .LayoutBuilder.inflateView (LayoutBuilder.java:62) на org.robolectric.shadows.ShadowLayoutInflater.inflate (ShadowLayoutInflater.java:50) на org.robolectric.shadows.ShadowLayoutInflater.inflate (ShadowLayoutInflater.java:55) at sun.reflect.NativeMethodAccessorImpl.invoke0 (родной метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.in voke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:601) в org.robolectric.bytecode.ShadowWrangler $ ShadowMethodPlan.run (ShadowWrangler.java:440) на android. view.LayoutInflater.inflate (LayoutInflater.java) при org.robolectric.tester.android.view.RoboWindow.setContentView (RoboWindow.java:80) на org.robolectric.shadows.ShadowActivity.setContentView (ShadowActivity.java:265) на sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) при sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) на sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:601) в org.robolectric.bytecode.ShadowWrangler $ ShadowMethodPlan.run (ShadowWrangler.java:440) at android.app.Activity.setContentView (Activity. Java) при com.clearc2.HomeActivity.onCreate (HomeActivity.java:38) при com.clearc2.HomeActivityTest.setUp (HomeActivityTest.java:22) при sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) при солнце .reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) на sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) на java.lang.reflect.Method.invoke (Method.java:601) при org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall (FrameworkMethod.java:44) на org.junit.internal.runners.model.ReflectiveCallable.run (ReflectiveCallable.java:15) на org.junit.runners.model.FrameworkMethod.invokeExplosively (FrameworkMethod.java: 41) на org.junit.internal.runners.statements.RunBefores.evaluate (RunBefores.java:27) на org.junit.internal.runners.statements.RunAfters.evaluate (RunAfters.java:31) на org.robolectric.RobolectricTestRunner $ 2.evaluate (RobolectricTestRunner.java:246) на 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) at org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java:52) в org.junit.runners.ParentRunner.runChildren (ParentRunner.java:191) в org.junit.runners. ParentRunner.access $ 000 (ParentRunner.java:42) при org.junit.runners.ParentRunner $ 2.evaluate (ParentRunner.java:184) при org.robolectric.RobolectricTestRunner $ 1. Вычислить значение (RobolectricTestRunner.java:181) в орг .junit.runners.ParentRunner.run (ParentRunner.java:236) по адресу org.apache.maven.su refire.junit4.JUnit4TestSet.execute (JUnit4TestSet.java:59) на org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet (AbstractDirectoryTestSuite.java:120) на org.apache.maven.surefire.suite. AbstractDirectoryTestSuite.execute (AbstractDirectoryTestSuite.java:103) на org.apache.maven.surefire.Surefire.run (Surefire.java:169) при sun.reflect.NativeMethodAccessorImpl.invoke0 (метод Native) при sun.reflect.NativeMethodAccessorImpl .invoke (NativeMethodAccessorImpl.java:57) на sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:601) ... 2 более причина d by: java.lang.NumberFormatException: для строки ввода: «@ 0» в java.lang.NumberFormatException.forInputString (NumberFormatException.java:65) at java.lang.Integer.parseInt (Integer.java:492) at com.android.internal.util.XmlUtils.convertValueToInt (XmlUtils.java:123) at android.content.res.TypedArray.getInt (TypedArray.java:254) в android.widget.TextView. конструктор (TextView.java:827) при android.widget.TextView. (TextView.java:447) при android.widget.EditText. (EditText.java:60) при android.widget.EditText. (EditText .java: 56) при org.robolectric.res.builder.LayoutBuilder.constructView (LayoutBuilder.java:167) на org.robolectric.res.builder.LayoutBuilder.create (LayoutBuilder.java:109) в орг .robolectric.res.builder.LayoutBuilder.doInflate (LayoutBuilder.java:42) на org.robolectric.res.builder.LayoutBuilder.doInflate (LayoutBuilder.java:45) на org.robolectric.res.builder.LayoutBuilder .doInflate (LayoutBuil der.java:45) на org.robolectric.res.builder.LayoutBuilder.doInflate (LayoutBuilder.java:45) на org.robolectric.res.builder.LayoutBuilder.inflateView (LayoutBuilder.java:62) на org.robolectric.shadows.ShadowLayoutInflater.inflate (ShadowLayoutInflater.Java: 50) на org.robolectric.shadows.ShadowLayoutInflater.inflate (ShadowLayoutInflater.java:55) в android.view.LayoutInflater.inflate (LayoutInflater.java) при org.robolectric.tester.android.view.RoboWindow .setContentView (RoboWindow.java:80) на org.robolectric.shadows.ShadowActivity.setContentView (ShadowActivity.java:265) в android.app.Activity.setContentView (Activity.java) в com.clearc2.HomeActivity. OnCreate (HomeActivity.java:38) в com.clearc2.HomeActivityTest.setUp (HomeActivityTest.java:22) в org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall (FrameworkMethod.java:44) в орг. junit.internal.r unners.model.ReflectiveCallable.run (ReflectiveCallable.java:15) на org.junit.runners.model.FrameworkMethod.invokeExplosively (FrameworkMethod.java:41) на org.junit.internal.runners.statements.RunBefores. оценить (RunBefores.java:27) на org.junit.internal.runners.statements.RunAfters.evaluate (RunAfters.java:31) в org.robolectric.RobolectricTestRunner $ 2.evaluate (RobolectricTestRunner.java:246) на 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) в org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:42) в org.junit.runners. ParentRunner $ 2.evaluate (ParentRunner.java:184) в org.robolectric.RobolectricTestRunner $ (RobolectricTestRunner.java:181 1. Вычислить значение) в org.junit.runners.ParentRunner.run (ParentRunner.java:236) в орг. apache.maven.surefire.junit4.JUnit4TestSet.execute (JUnit4TestSet.java:59) at org. apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet (AbstractDirectoryTestSuite.java:120) на org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute (AbstractDirectoryTestSuite.java:103) в org.apache.maven.surefire .Surefire.run (Surefire.java:169) ... 2 more

ответ

6

нашел проблему. Robolectric не понравились параметры android ime, установленные на моем пароле EditText. Как только я удалил эти строки, тест прошел, как ожидалось.

+2

Это правильный ответ, и это было большой помощью для меня. Так что спасибо. И не забудьте отметить это как правильный ответ. Приветствия. –

2

У меня были подобные ошибки, но проблема была imeActionId, а не imeOptions. Удаление imeActionId из XML и установка его в коде (но сохранение imeOptions) решили эту проблему.

Здесь были мои ошибки для справки и для поисковых роботов поисковых систем, чтобы люди могли найти этот ответ проще:

android.view.InflateException: XML file app/build/intermediates/res/debug/layout/fragment_registration_form.xml 
line #-1 (sorry, not yet implemented): Error inflating class com.company.project.widgets.MyCustomEditTextView 
... 
Caused by: java.lang.reflect.InvocationTargetException 
... 
Caused by: java.lang.NumberFormatException: For input string: "@0" 
... 

я думаю Robolectric не может разобрать imeActionId правильно по какой-то причине. Похоже, что это связано с проблемой, описанной в этом вопросе: Why does setting imeActionId with a predefined ID resource create an error?