AndroidTest从命令行运行时失败:app:connectedDebugAndroidTest

Lib*_*bin 5 android spring-test android-espresso spring-android android-instrumentation

我正在使用android spring RestTemplate在我的应用程序上进行REST服务调用.我添加了android Instrumentation测试,其中包括模拟REST服务调用.从android studio运行时,我的所有测试运行正常,但测试无法在终端使用时加载spring mock类

   ./gradlew clean :app:connectedDebugAndroidTest
Run Code Online (Sandbox Code Playgroud)

spring.gradle上的spring测试依赖项

    androidTestCompile("org.springframework:spring-test:3.2.8.RELEASE")
Run Code Online (Sandbox Code Playgroud)

如果我改为compile而不是androidTestCompile,Android测试从终端正常运行.由于我不希望这种依赖我的生产APK任何帮助,赞赏.

这是开始测试时的日志

08-05 00:04:12.585 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.asm.commons.JSRInlinerAdapter 08-05 00:04:12.587 22274-22302/com.libin .androiduitesting E/TestLoader:找不到类:org.springframework.asm.commons.TryCatchBlockSorter 08-05 00:04:12.593 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework. cglib.transform.AbstractProcessTask 08-05 00:04:12.593 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.cglib.transform.AbstractTransformTask 08-05 00:04:12.603 22274- 22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.core.convert.support.ConvertingPropertyEditorAdapter 08-05 00:04:12.610 22274-22302/com.libin.androiduitesting E/TestLoader:无法find class:org.springframework.core.io.ResourceEditor 08-05 00:04:12.611 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.spring framework.core.io.support.ResourceArrayPropertyEditor 08-05 00:04:12.617 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.http.MockHttpInputMessage 08-05 00:04 :12.618 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.http.MockHttpOutputMessage 08-05 00:04:12.618 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.http.client.MockClientHttpRequest 08-05 00:04:12.618 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.http. client.MockClientHttpResponse 08-05 00:04:12.618 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.jndi.ExpectedLookupTemplate 08-05 00:04:12.619 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.jndi.SimpleNamingContext 08-05 00:04:12.619 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.jndi.SimpleNamingContextBuilder 08-05 00:04:12.619 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock. web.DelegatingServletInputStream 08-05 00:04:12.619 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.web.DelegatingServletOutputStream 08-05 00:04:12.620 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.web.MockBodyContent 08-05 00:04:12.620 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org .springframework.mock.web.MockExpressionEvaluator 08-05 00:04:12.620 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.web.MockFilterChain 08-05 00:04: 12.620 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.web.MockFilterConfig 08-05 00:04:12.620 22274-22302/com.l ibin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.web.MockHttpServletRequest 08-05 00:04:12.621 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework ms.::::::::: -22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.web.MockJspWriter 08-05 00:04:12.621 22274-22302/com.libin.androiduitesting E/TestLoader:找不到class:org.springframework.mock.web.MockMultipartFile 08-05 00:04:12.621 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.web.MockMultipartHttpServletRequest 08-05 00 :04:12.622 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.web.MockPageContext 08-05 00:04:12.622 22274-22302/c om.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.web.MockRequestDispatcher 08-05 00:04:12.623 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org .springframework.mock.web.MockServletConfig 08-05 00:04:12.623 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.web.MockServletContext 08-05 00:04: 12.628 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.web.PassThroughFilterChain 08-05 00:04:12.628 22274-22302/com.libin.androiduitesting E/TestLoader:Could找不到类:org.springframework.mock.web.portlet.MockActionRequest 08-05 00:04:12.629 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.web.portlet .MockActionResponse 08-05 00:04:12.629 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.web.portlet.MockBaseURL 08-05 00:04:12.6 29 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.web.portlet.MockCacheControl 08-05 00:04:12.630 22274-22302/com.libin.androiduitesting E/AndroidRuntime :FATAL EXCEPTION:instr:android.support.test.runner.AndroidJUnitRunner进程:com.libin.androiduitesting,PID:22274 java.lang.NoClassDefFoundError:org.springframework.mock.web.portlet.MockClientDataRequest at java.lang.Class.位于android.support.test.internal的android.support.test.internal.runner.TestLoader.doLoadClass(TestLoader.java:92)的java.lang.Class.forName(Class.java:324)中的classForName(Native Method).在android.support.test.internal.runner.TestRequestBuilder.build(TestRequestBuilder)的android.support.test.internal.runner.TestRequestBuilder.loadClassesFromClassPath(TestRequestBuilder.java:801)上的runner.TestLoader.loadIfTest(TestLoader.java:113). java:747)在android.support.test.run的android.support.test.runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:354)ner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:260)在android.app.Instrumentation $ InstrumentationThread.run(Instrumentation.java:1879)

Jeh*_*lio 1

似乎您缺少测试所需的模拟类。尝试下载 spring-test jar 并检查所有模拟类是否都在里面 - 例如,它应该org.springframework.mock.web.portlet.MockClientDataRequest从 package导出类org.springframework.mock.web.portlet

您可能正在使用一些不幸的 jar 构建,其中模拟类的依赖项丢失了,就像本问题一样。

另外你可以尝试更新spring框架,最新的已经是4.3.2了。