2014-10-29 37 views
1

一个stackmap框架与gradle这个和Java 7内置的Android项目,改变从19 targetSdkVersion至21时,下列异常运行robolectric测试时抛出.gradle:安卓的VerifyError:</p> <p>编译:期待在分支目标15

apply plugin: 'com.android.application' 
apply plugin: 'robolectric' 


android { 
compileSdkVersion 21 
buildToolsVersion '21.0.2' 
defaultConfig { 
    minSdkVersion 9 
    targetSdkVersion 21 
    versionCode 6 
    versionName '2.0.0' 
} 
... 

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
compile 'com.android.support:support-v4:21.0.+' 
compile 'org.roboguice:roboguice:2.0' 
compile 'com.actionbarsherlock:actionbarsherlock:[email protected]' 
compile 'com.github.rtyley:roboguice-sherlock:1.5' 
compile 'org.apache.commons:commons-lang3:[email protected]' 
compile 'oauth.signpost:signpost-core:1.2.1.2' 
compile 'ch.acra:acra:4.2.3' 
compile 'com.google.code.gson:gson:2.2.4' 
compile 'com.squareup.okhttp:okhttp:2.0.0' 
compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0' 
compile 'com.squareup.okio:okio:1.0.1' 
compile 'com.jakewharton:disklrucache:2.0.2' 
compile group: 'com.google.guava', name: 'guava', version: '17.0' 
compile fileTree(dir: 'libs', include: ['*.jar']) 
testCompile 'com.squareup:fest-android:1.0.+' 
testCompile 'org.mockito:mockito-all:+' 
testCompile 'junit:junit:4.11' 
testCompile 'org.robolectric:robolectric:2.3+' 
androidTestCompile 'com.squareup:fest-android:1.0.+' 
androidTestCompile 'org.mockito:mockito-all:+' 
androidTestCompile 'junit:junit:4.11' 
androidTestCompile 'org.robolectric:robolectric:2.3+' 
} 

失败测试输出:

java.lang.VerifyError: Expecting a stackmap frame at branch target 15 
Exception Details: 
Location: 
android/support/v4/app/FragmentTransitionCompat21$EpicenterView.$$robo$init()V @4: ifnonnull 
Reason: 
Expected stackmap frame at this location. 
Bytecode: 
0000000: 2ab4 0034 c700 0b2a 2ab8 0063 b500 34b1 
0000010:           

at android.support.v4.app.BackStackRecord$TransitionState.__constructor__(BackStackRecord.java:1456) 
at android.support.v4.app.BackStackRecord$TransitionState.<init>(BackStackRecord.java:1452) 
at android.support.v4.app.BackStackRecord.beginTransition(BackStackRecord.java:1018) 
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:660) 
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489) 
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:454) 
at org.robolectric.util.Scheduler.postDelayed(Scheduler.java:37) 
at org.robolectric.shadows.ShadowLooper.post(ShadowLooper.java:207) 
at org.robolectric.shadows.ShadowHandler.postDelayed(ShadowHandler.java:56) 
at org.robolectric.shadows.ShadowHandler.post(ShadowHandler.java:51) 
at android.os.Handler.post(Handler.java) 
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1395) 
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:636) 
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:615) 
at com.irokodemo.app.application.IrokoTestRunner.startFragment(IrokoTestRunner.java:40) 
at com.irokodemo.app.fragment.TvSeasonTabFragmentTest.shouldSetTitle(TvSeasonTabFragmentTest.java:84) 
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.InvokeMethod.evaluate(InvokeMethod.java:17) 
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:250) 
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: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 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 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:64) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:744) 

时targetSdkVersion设置为19

这不引发异常

问题是什么?

回答

4

更新Robolectric 2.3至2.4版解决了这个问题。

testCompile'org.robolectric:robolectric:2.4'