2015-06-19 4 views
2

Я бегу на вопрос где мои robolectric испытания проходят в моем терминале с: ./gradlew test и той же команды, правильно настроен со всеми инструментами на circleci дает мне эту ошибку:Robolectric в среде CI

java.lang.RuntimeException: java.lang.IllegalArgumentException: maxSize <= 0 
     at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:238) 
     at org.robolectric.RobolectricTestRunner.runChild(RobolectricTestRunner.java:185) 
     at org.robolectric.RobolectricTestRunner.runChild(RobolectricTestRunner.java:54) 
     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
     at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:149) 
     at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
     at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:86) 
     at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:49) 
     at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69) 
     at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:48) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:497) 
     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:105) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:497) 
     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:360)  
     at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.IllegalArgumentException: maxSize <= 0 
     at com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache.<init>(LruMemoryCache.java:33) 
     at com.nostra13.universalimageloader.core.DefaultConfigurationFactory.createMemoryCache(DefaultConfigurationFactory.java:114) 
     at com.nostra13.universalimageloader.core.ImageLoaderConfiguration$Builder.initEmptyFieldsWithDefaultValues(ImageLoaderConfiguration.java:584) 
     at com.nostra13.universalimageloader.core.ImageLoaderConfiguration$Builder.build(ImageLoaderConfiguration.java:559) 
     at com.heetch.HeetchApp.initImageLoader(HeetchApp.java:123) 
     at com.heetch.HeetchApp.onCreate(HeetchApp.java:55) 
     at org.robolectric.internal.ParallelUniverse.setUpApplicationState(ParallelUniverse.java:140) 
     at org.robolectric.RobolectricTestRunner.setUpApplicationState(RobolectricTestRunner.java:421) 
     at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:234) 
     ... 34 more 

Я использую robolectric 3.0-rc3, и я верю, что эта ошибка исходит от самого robolectric, но у меня нет никаких подсказок о том, где искать эту ошибку.

+1

делает ваш StackTrace имеют вызванные части, которые вы не отвечал? – nenick

+0

@nenick Я обновил до stacktrace до полного вывода –

+0

Содержимое HeetchApp.initImageLoader (HeetchApp.java:123) может быть интересно. Это работает в AndroidStudio? Причина в том, что createMemoryCache будет вызываться с размером кеша <= 0. Является ли этот размер кеша установленным вашим классом приложения? Когда да, где/как вы получаете значение размера? – nenick

ответ

2

Решение было добавить кэш памяти для ImageLoader, как показано ниже:

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this) 
       .memoryCache(new WeakMemoryCache()) 
       .build(); 
Смежные вопросы