2015-02-17 18 views
14

Używam tej samej wersji Gradle, 1.7 jdk nie jest więc dokładnie tej samej wersji.Gradle robolectric działa na komputerze OSX, ale nie na Linuksie

Głównym skarżą testów jest:

java.lang.NoClassDefFoundError: org/apache/maven/artifact/ant/DependenciesTask Caused by: java.lang.ClassNotFoundException: org.apache.maven.artifact.ant.DependenciesTask

Próbowałem oczyścić Gradle cache w celu ponownego pobrania wszystkich zależności. Próbowałem również oczyścić projekt.

To nie działało.

Jakie zmienne mogą wpłynąć na wykonanie testu gradle?

Dla mnie jest:

  • Gradle sama
  • wersja Java problemów połączeń SDK
  • internetowe

Co jeszcze można ingerencji? Czy wersje wtyczek zależą od platformy?

Executing task ':robolectric-tests:test' (up-to-date check took 0.432 secs) due to: 
    Output file /home/ec2-user/repositories/MyProject/robolectric-tests/build/test-results has changed. 
    Output file /home/ec2-user/repositories/MyProject/robolectric-tests/build/reports/tests has changed. 
    Output file /home/ec2-user/repositories/MyProject/robolectric-tests/build/test-results/binary/test has changed. 
Starting process 'Gradle Test Executor 1'. Working directory: /home/ec2-user/repositories/MyProject/robolectric-tests Command: /usr/java/jdk1.7.0_72/bin/java -Djava.security.manager=jarjar.org.gradle.process.internal.child.BootstrapSecurityManager -Dfile.encoding=UTF-8 -Duser.country=ES -Duser.language=ca -Duser.variant -ea -cp /home/ec2-user/.gradle/caches/2.3/workerMain/gradle-worker.jar jarjar.org.gradle.process.internal.launcher.GradleWorkerMain 'Gradle Test Executor 1' 
Successfully started process 'Gradle Test Executor 1' 
Gradle Test Executor 1 started executing tests. 
Gradle Test Executor 1 finished executing tests. 

com.tubtale.MyProject.robolectrictests.tests.RobTMyAndroidClassTest > testWhenActivityCreatedHelloTextViewIsVisible2 FAILED 
    java.lang.NoClassDefFoundError: org/apache/maven/artifact/ant/DependenciesTask 

     Caused by: 
     java.lang.ClassNotFoundException: org.apache.maven.artifact.ant.DependenciesTask 

com.tubtale.MyProject.robolectrictests.tests.RobTMyAndroidClassTest > testWhenActivityCreatedHelloTextViewIsVisible FAILED 
    java.lang.NoClassDefFoundError: org/apache/maven/artifact/ant/DependenciesTask 

2 tests completed, 2 failed 
Finished generating test XML results (0.217 secs) into: /home/ec2-user/repositories/MyProject/robolectric-tests/build/test-results 
Generating HTML test report... 
Finished generating test html results (0.11 secs) into: /home/ec2-user/repositories/MyProject/robolectric-tests/build/reports/tests 
:robolectric-tests:test FAILED 
:robolectric-tests:test (Thread[main,5,main]) completed. Took 4.005 secs. 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':robolectric-tests:test'. 
> There were failing tests. See the report at: file:///home/ec2-user/repositories/MyProject/robolectric-tests/build/reports/tests/index.html 

* Try: 
Run with --debug option to get more log output. 

* Exception is: 
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':robolectric-tests:test'. 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69) 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) 
    at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35) 
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64) 
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) 
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42) 
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) 
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53) 
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) 
    at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:306) 
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79) 
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63) 
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51) 
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23) 
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:88) 
    at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29) 
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62) 
    at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23) 
    at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:68) 
    at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32) 
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62) 
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:55) 
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149) 
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106) 
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86) 
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:80) 
    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33) 
    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24) 
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:36) 
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26) 
    at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:51) 
    at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:169) 
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237) 
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210) 
    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35) 
    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24) 
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206) 
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169) 
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33) 
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22) 
    at org.gradle.launcher.Main.doAction(Main.java:33) 
    at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) 
    at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54) 
    at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35) 
    at org.gradle.launcher.GradleMain.main(GradleMain.java:23) 
Caused by: org.gradle.api.GradleException: There were failing tests. See the report at: file:///home/ec2-user/repositories/MyProject/robolectric-tests/build/reports/tests/index.html 
    at org.gradle.api.tasks.testing.Test.handleTestFailures(Test.java:1118) 
    at org.gradle.api.tasks.testing.Test.executeTests(Test.java:549) 
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63) 
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:218) 
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:211) 
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:200) 
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:585) 
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:568) 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80) 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61) 
    ... 44 more 


BUILD FAILED 
+0

Co z konfiguracją repozytoriów? Czy dołączasz mavenCentral lub coś podobnego do twojego pliku kompilacji? –

+0

Alex Florescu, mam taki sam plik budowania dla obu projektów, w rzeczywistości jeden jest dokładną kopią innego –

+0

To dobrze, ale nie o to pytam :) Jeśli nie masz tego ustawienia poprawnie, w jedno środowisko może działać, ponieważ zależność jest już buforowana lokalnie, podczas gdy w drugiej nie jest, a twoja kompilacja nie ma możliwości jej uzyskania. –

Odpowiedz

24

Wystąpiłem również w tym wydaniu w systemie Linux, ale nie w systemie OSX. Znalazłem obejście, dodając

org.apache.maven:maven-ant-tasks:2.1.3

do swoich zależności "testCompile".

dependencies { 
    repositories { 
    mavenCentral() 
    } 
    testCompile 'junit:junit:4.12' 
    testCompile 'org.apache.maven:maven-ant-tasks:2.1.3' 
    testCompile 'org.robolectric:robolectric:2.4' 
    testCompile 'org.mockito:mockito-all:1.9.5' 
} 

Nie wiem, dlaczego maven-ant-tasks nie dostaje się do Linuksa. Wydaje się, że jest to prawidłowa zależność robolektryka.

+0

Myślę, że po tym, jak próbowałem migrować do wtyczki "1.1.0 android gradle", również otrzymałem takie samo zachowanie. –

+0

@EugenMartynov Czy nadal jesteś widząc to? Czy zmieniłeś 'androidTestCompile' na' testCompile'? spróbuj 'gradlew clean testDebug'? –

+0

Zmieniłem 'androidTestCompile' na' testCompile' oraz wyczyściłem kilka razy. Może to być związane z wtyczką sdk-manager firmy Jake Wharton. Sprawdzę później wieczorem –

7

Wybrana odpowiedź jest prawidłowa, a także ma zastosowanie przy uaktualnianiu Gradle z 2.2.1 do 2.3 na OSX. Jeśli nie dodasz zależności do testCompile 'org.apache.maven:maven-ant-tasks:2.1.3', testy Robolectric zawiodą, gdy wersja Gradle będzie równa 2.3.

Warto również zauważyć, że mam oddzielny moduł do moich testów RoboLogric, więc dodałem nową zależność do pliku build.gradle w moim module Robolectric, a NIE moim module aplikacji na Androida.

Właśnie dostałem nowego Maca, więc mój stary Mac Macintosh & jest obok siebie, podczas gdy ja konfiguruję nowy. Użyłem Homebrew do zbudowania mojego nowego Maca i nie zdawałem sobie sprawy, że właśnie wydano Gradle 2.3 ... Dlatego testy Robolectric działały na moim starym Macu (z Gradle 2.2.1), ale nie na moim nowym Macu (z Gradle 2.3).

+0

Masz absolutną rację. Wystąpił ten błąd podczas uruchamiania testu bezpośrednio używać gradle (2.3) na moim Macintoshu, ale nie ma problemu przy korzystaniu z pakietu gradle projektu (2.2.1). –

Powiązane problemy