2014-06-09 45 views
0

我在one of my projects中使用了gradle-android-test-plugin。在4臺機器中的3臺上,./gradlew --daemon test成功。另一方面它失敗了。不可重現的構建失敗,並使用gradle-android-test-plugin

build.gradle位於here,.travis.yml在這裏here。所有機器具有非常相似的配置:我能找到的差異

  • 不同版本的Linux內核
  • 不同的Java構建的名稱(即 「ArchLinux的建設7.u55_2.4.7-1-x86_64的」)

詢問project's site後,我建議比較我的環境配置並在此處詢問。我不知道這個問題來自哪裏:

  • 我的代碼中包含一個bug。的build.gradle
  • 的環境配置(< - 大概這一個)
  • 在插件或錯誤gradle這個

因爲./gradlew --daemon test是顯示這種行爲(其他行爲上的不同一致的唯一命令個人電腦),我真的不知道在哪裏看得更遠。下面的堆棧跟蹤會導致構建失敗:

java.lang.RuntimeException: java.lang.RuntimeException: Stub! 
    at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:240) 
    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:50) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    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:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    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) 
Caused by: java.lang.RuntimeException: Stub! 
    at android.net.Uri.parse(Uri.java:53) 
    at org.robolectric.shadows.ShadowMediaStore.reset(ShadowMediaStore.java:27) 
    at org.robolectric.Robolectric.reset(Robolectric.java:1351) 
    at org.robolectric.internal.ParallelUniverse.resetStaticState(ParallelUniverse.java:47) 
    at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:226) 
    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:50) 
    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 

執行以下測試時會引發此問題。

@Config(emulateSdk = 18) 
@RunWith(RobolectricTestRunner.class) 
public class SanityTest { 

    @Test 
    public void sanity(){ 
     int i=1; 
     assertEquals("insanity!", 2, i+1); 
    } 

} 

的完整性,下面的java的配置:

FAIL$ java -version; javac -version 
java version "1.7.0_55" 
OpenJDK Runtime Environment (IcedTea 2.4.7) (ArchLinux build 7.u55_2.4.7-1-x86_64) 
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode) 
javac 1.7.0_55 

SUCCESS1$ java -version; javac -version 
java version "1.7.0_51" 
OpenJDK Runtime Environment (IcedTea 2.4.4) (suse-8.32.5-x86_64) 
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode) 
javac 1.7.0_51 

SUCCESS2$ java -version; javac -version 
java version "1.7.0_55" 
OpenJDK Runtime Environment (IcedTea 2.4.7) (ArchLinux build 7.u55_2.4.7-1-x86_64) 
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode) 
javac 1.7.0_55 

TRAVIS$ java -version 
java version "1.7.0_51" 
Java(TM) SE Runtime Environment (build 1.7.0_51-b13) 
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode) 
TRAVIS$ javac -version 
javac 1.7.0_51 

我也HAVA檢查的./gradlew --version輸出,但沒有發現相關的差異:

SUCCESS1 
------------------------------------------------------------ 
Gradle 1.10 
------------------------------------------------------------ 

Build time: 2013-12-17 09:28:15 UTC 
Build number: none 
Revision:  36ced393628875ff15575fa03d16c1349ffe8bb6 

Groovy:  1.8.6 
Ant:   Apache Ant(TM) version 1.9.2 compiled on July 8 2013 
Ivy:   2.2.0 
JVM:   1.7.0_55 (Oracle Corporation 24.51-b03) 
OS:   Linux 3.14.4-1-ARCH amd64 

SUCCESS2 
------------------------------------------------------------ 
Gradle 1.10 
------------------------------------------------------------ 

Build time: 2013-12-17 09:28:15 UTC 
Build number: none 
Revision:  36ced393628875ff15575fa03d16c1349ffe8bb6 

Groovy:  1.8.6 
Ant:   Apache Ant(TM) version 1.9.2 compiled on July 8 2013 
Ivy:   2.2.0 
JVM:   1.7.0_55 (Oracle Corporation 24.51-b03) 
OS:   Linux 3.14.4-1-ARCH amd64 

FAIL 
------------------------------------------------------------ 
Gradle 1.10 
------------------------------------------------------------ 

Build time: 2013-12-17 09:28:15 UTC 
Build number: none 
Revision:  36ced393628875ff15575fa03d16c1349ffe8bb6 

Groovy:  1.8.6 
Ant:   Apache Ant(TM) version 1.9.2 compiled on July 8 2013 
Ivy:   2.2.0 
JVM:   1.7.0_55 (Oracle Corporation 24.51-b03) 
OS:   Linux 3.10.40-1-MANJARO amd64 

回答

0

我也面臨這個問題最近,我解決了這個問題如下。

  1. 刪除〜/ .m2目錄目錄,如果是否存在

則測試將工作存在

  • 刪除〜/ .gradle /緩存!