Тест Android Studio Ui выдает ошибку при включении Java 8 - PullRequest
0 голосов
/ 05 января 2019

Я пробовал на Android Studio 3.2.1 и Android Studio 3.4 Если я включаю Java 8 в файле Gradle и запускаю тест эспрессо, я получаю эту ошибку:

java.lang.RuntimeExceptionCause: java.lang.RuntimeException

После многих испытаний я обнаружил, что удаление поддержки Java8 из файлов Gradle устраняет проблему.

Но Java 8 важна для моего проекта. У вас есть лучшее решение?

Это мой код:

import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;

import androidx.test.espresso.Espresso;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
import androidx.test.rule.ActivityTestRule;
import com.dubizzle.workshopsample.R;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;


@RunWith(AndroidJUnit4.class)
@LargeTest
public class MainActivityUiTest {

  @Rule
  public ActivityTestRule<MainActivity> mActivityRule
      = new ActivityTestRule<>(MainActivity.class);

  @Test
  public void testShareButtonClickedUi() {
    Espresso.onView(withId(R.id.txtStatus))
        .check(matches(withText("Hello World!")));

    Espresso.onView(withId(R.id.btnShare)).perform(click());

    Espresso.onView(withId(R.id.txtStatus))
        .check(matches(withText("onShareButtonClicked")));
  }
}

полная ошибка:

org.gradle.api.tasks.TaskExecutionException: выполнение задачи не выполнено ': Приложение: transformClassesWithDexBuilderForDebugAndroidTest. в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions (ExecuteActionsTaskExecuter.java:103) в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute (ExecuteActionsTaskExecuter.java:73) в org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute (OutputDirectoryCreatingTaskExecuter.java:51) в org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute (SkipUpToDateTaskExecuter.java:59) в org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute (ResolveTaskOutputCachingStateExecuter.java:54) в org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute (ValidatingTaskExecuter.java:59) в org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute (SkipEmptySourceFilesTaskExecuter.java:101) в org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute (FinalizeInputFilePropertiesTaskExecuter.java:44) в org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute (CleanupStaleOutputsExecuter.java:91) в org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute (ResolveTaskArtifactStateTaskExecuter.java:62) в org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute (SkipTaskWithNoActionsExecuter.java:59) в org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute (SkipOnlyIfTaskExecuter.java:54) в org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute (ExecuteAtMostOnceTaskExecuter.java:43) в org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute (CatchExceptionTaskExecuter.java:34) в org.gradle.execution.taskgraph.DefaultTaskGraphExecuter $ EventFiringTaskWorker $ 1.run (DefaultTaskGraphExecuter.java:256) в org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationExecutor.java:317) в org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationExecutor.java:309) в org.gradle.internal.operations.DefaultBuildOperationExecutor.execute (DefaultBuildOperationExecutor.java:185) в org.gradle.internal.operations.DefaultBuildOperationExecutor.run (DefaultBuildOperationExecutor.java:97) в org.gradle.internal.operations.DelegatingBuildOperationExecutor.run (DelegatingBuildOperationExecutor.java:31) в org.gradle.execution.taskgraph.DefaultTaskGraphExecuter $ EventFiringTaskWorker.execute (DefaultTaskGraphExecuter.java:249) в org.gradle.execution.taskgraph.DefaultTaskGraphExecuter $ EventFiringTaskWorker.execute (DefaultTaskGraphExecuter.java:238) в org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ TaskExecutorWorker $ 1.execute (DefaultTaskPlanExecutor.java:104) в org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ TaskExecutorWorker $ 1.execute (DefaultTaskPlanExecutor.java:98) в org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute (DefaultTaskExecutionPlan.java:663) в org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask (DefaultTaskExecutionPlan.java:596) в org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ TaskExecutorWorker.run (DefaultTaskPlanExecutor.java:98) вorg.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process (DefaultTaskPlanExecutor.java:59) в org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute (DefaultTaskGraphExecuter.java:130) в org.gradle.execution.SelectedTaskExecutionAction.execute (SelectedTaskExecutionAction.java:37) в org.gradle.execution.DefaultBuildExecuter.execute (DefaultBuildExecuter.java:37) в org.gradle.execution.DefaultBuildExecuter.access $ 000 (DefaultBuildExecuter.java:23) в org.gradle.execution.DefaultBuildExecuter $ 1.proceed (DefaultBuildExecuter.java:43) в org.gradle.execution.DryRunBuildExecutionAction.execute (DryRunBuildExecutionAction.java:46) в org.gradle.execution.DefaultBuildExecuter.execute (DefaultBuildExecuter.java:37) в org.gradle.execution.DefaultBuildExecuter.execute (DefaultBuildExecuter.java:30) в org.gradle.initialization.DefaultGradleLauncher $ ExecuteTasks.run (DefaultGradleLauncher.java:336) в org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationExecutor.java:317) в org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationExecutor.java:309) в org.gradle.internal.operations.DefaultBuildOperationExecutor.execute (DefaultBuildOperationExecutor.java:185) в org.gradle.internal.operations.DefaultBuildOperationExecutor.run (DefaultBuildOperationExecutor.java:97) в org.gradle.internal.operations.DelegatingBuildOperationExecutor.run (DelegatingBuildOperationExecutor.java:31) в org.gradle.initialization.DefaultGradleLauncher.runTasks (DefaultGradleLauncher.java:210) в org.gradle.initialization.DefaultGradleLauncher.doBuildStages (DefaultGradleLauncher.java:140) в org.gradle.initialization.DefaultGradleLauncher.executeTasks (DefaultGradleLauncher.java:115) в org.gradle.internal.invocation.GradleBuildController $ 1.call (GradleBuildController.java:78) в org.gradle.internal.invocation.GradleBuildController $ 1.call (GradleBuildController.java:75) в org.gradle.internal.work.DefaultWorkerLeaseService.withLocks (DefaultWorkerLeaseService.java:152) в org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks (StopShieldingWorkerLeaseService.java:38) в org.gradle.internal.invocation.GradleBuildController.doBuild (GradleBuildController.java:100) в org.gradle.internal.invocation.GradleBuildController.run (GradleBuildController.java:75) в org.gradle.tooling.internal.provider.runner.ClientProvidedBuildActionRunner.run (ClientProvidedBuildActionRunner.java:62) в org.gradle.launcher.exec.ChainingBuildActionRunner.run (ChainingBuildActionRunner.java:35) в org.gradle.launcher.exec.ChainingBuildActionRunner.run (ChainingBuildActionRunner.java:35) в org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run (ValidatingBuildActionRunner.java:32) в org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner $ 3.run (RunAsBuildOperationBuildActionRunner.java:45) в org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationExecutor.java:317) в org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationExecutor.java:309) в org.gradle.internal.operations.DefaultBuildOperationExecutor.execute (DefaultBuildOperationExecutor.java:185) в org.gradle.internal.operations.DefaultBuildOperationExecutor.run (DefaultBuildOperationExecutor.java:97) в org.gradle.internal.operations.DelegatingBuildOperationExecutor.run (DelegatingBuildOperationExecutor.java:31) в org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run (RunAsBuildOperationBuildActionRunner.java:42) в org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run (SubscribableBuildActionRunner.java:51) вorg.gradle.launcher.exec.InProcessBuildActionExecuter.execute (InProcessBuildActionExecuter.java:47) в org.gradle.launcher.exec.InProcessBuildActionExecuter.execute (InProcessBuildActionExecuter.java:31) в org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute (BuildTreeScopeBuildActionExecuter.java:39) в org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute (BuildTreeScopeBuildActionExecuter.java:25) в org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute (ContinuousBuildActionExecuter.java:80) в org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute (ContinuousBuildActionExecuter.java:53) в org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute (ServicesSetupBuildActionExecuter.java:61) в org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute (ServicesSetupBuildActionExecuter.java:34) в org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute (GradleThreadBuildActionExecuter.java:36) в org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute (GradleThreadBuildActionExecuter.java:25) в org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute (ParallelismConfigurationBuildActionExecuter.java:43) в org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute (ParallelismConfigurationBuildActionExecuter.java:29) в org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute (StartParamsValidatingActionExecuter.java:64) в org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute (StartParamsValidatingActionExecuter.java:29) в org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute (SessionFailureReportingActionExecuter.java:59) в org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute (SessionFailureReportingActionExecuter.java:44) в org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute (SetupLoggingActionExecuter.java:46) в org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute (SetupLoggingActionExecuter.java:30) в org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild (ExecuteBuild.java:67) в org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute (BuildCommandOnly.java:36) в org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed (DaemonCommandExecution.java:122) в org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute (WatchForDisconnection.java:37) в org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed (DaemonCommandExecution.java:122) в org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute (ResetDeprecationLogger.java:26) в org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed (DaemonCommandExecution.java:122) в org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute (RequestStopIfSingleUsedDaemon.java:34) в org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed (DaemonCommandExecution.java:122) в org.gradle.launcher.daemon.server.exec.ForwardClientInput $ 2.call (ForwardClientInput.java:74) в org.gradle.launcher.daemon.server.exec.ForwardClientInput $ 2.call (ForwardClientInput.java:72) в org.gradle.util.Swapper.swap (Swapper.java:38) в org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute (ForwardClientInput.java:72) в org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed (DaemonCommandExecution.java:122) в org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute (LogAndCheckHealth.java:55) в org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed (DaemonCommandExecution.java:122) вorg.gradle.launcher.daemon.server.exec.LogToClient.doBuild (LogToClient.java:62) в org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute (BuildCommandOnly.java:36) в org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed (DaemonCommandExecution.java:122) в org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild (EstablishBuildEnvironment.java:82) в org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute (BuildCommandOnly.java:36) в org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed (DaemonCommandExecution.java:122) в org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy $ 1.run (StartBuildOrRespondWithBusy.java:50) в org.gradle.launcher.daemon.server.DaemonStateCoordinator $ 1.run (DaemonStateCoordinator.java:295) в org.gradle.internal.concurrent.ExecutorPolicy $ CatchAndRecordFailures.onExecute (ExecutorPolicy.java:63) в org.gradle.internal.concurrent.ManagedExecutorImpl $ 1.run (ManagedExecutorImpl.java:46) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) в org.gradle.internal.concurrent.ThreadFactoryImpl $ ManagedThreadRunnable.run (ThreadFactoryImpl.java:55) at java.lang.Thread.run (Thread.java:745) Причина: java.lang.RuntimeException: java.lang.RuntimeException в sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) в sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62) в sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) в java.lang.reflect.Constructor.newInstance (Constructor.java:423) в java.util.concurrent.ForkJoinTask.getThrowableException (ForkJoinTask.java:593) в java.util.concurrent.ForkJoinTask.reportException (ForkJoinTask.java:677) в java.util.concurrent.ForkJoinTask.join (ForkJoinTask.java:720) в com.android.ide.common.internal.WaitableExecutor.waitForTasksWithQuickFail (WaitableExecutor.java:146) в com.android.build.gradle.internal.transforms.DesugarIncrementalTransformHelper.getInitalGraphData (DesugarIncrementalTransformHelper.java:162) в com.android.build.gradle.internal.transforms.DesugarIncrementalTransformHelper.lambda $ makeDesugaringGraph $ 2 (DesugarIncrementalTransformHelper.java:134) в com.android.builder.desugaring.DesugaringGraphs.forVariant (DesugaringGraphs.java:50) в com.android.build.gradle.internal.transforms.DesugarIncrementalTransformHelper.makeDesugaringGraph (DesugarIncrementalTransformHelper.java:132) в com.google.common.base.Suppliers $ NonSerializableMemoizingSupplier.get (Suppliers.java:160) в com.android.build.gradle.internal.transforms.DesugarIncrementalTransformHelper.getAdditionalPaths (DesugarIncrementalTransformHelper.java:111) в com.android.build.gradle.internal.transforms.DexArchiveBuilderTransform.transform (DexArchiveBuilderTransform.java:325) в com.android.build.gradle.internal.pipeline.TransformTask $ 2.call (TransformTask.java:239) в com.android.build.gradle.internal.pipeline.TransformTask $ 2.call (TransformTask.java:235) в com.android.builder.profile.ThreadRecorder.record (ThreadRecorder.java:102) в com.android.build.gradle.internal.pipeline.TransformTask.transform (TransformTask.java:230) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:498) в org.gradle.internal.reflect.JavaMethod.invoke (JavaMethod.java:73) в org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute (IncrementalTaskAction.java:50) вorg.gradle.api.internal.project.taskfactory.StandardTaskAction.execute (StandardTaskAction.java:39) в org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute (StandardTaskAction.java:26) в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter $ 1.run (ExecuteActionsTaskExecuter.java:124) в org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationExecutor.java:317) в org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationExecutor.java:309) в org.gradle.internal.operations.DefaultBuildOperationExecutor.execute (DefaultBuildOperationExecutor.java:185) в org.gradle.internal.operations.DefaultBuildOperationExecutor.run (DefaultBuildOperationExecutor.java:97) в org.gradle.internal.operations.DelegatingBuildOperationExecutor.run (DelegatingBuildOperationExecutor.java:31) в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction (ExecuteActionsTaskExecuter.java:113) в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions (ExecuteActionsTaskExecuter.java:95) ... еще 110 Вызвано: java.lang.RuntimeException at org.objectweb.asm.ClassVisitor.visitModule (ClassVisitor.java:148) в org.objectweb.asm.ClassReader.readModule (ClassReader.java:731) в org.objectweb.asm.ClassReader.accept (ClassReader.java:632) в org.objectweb.asm.ClassReader.accept (ClassReader.java:500) в com.android.builder.desugaring.DesugaringClassAnalyzer.analyze (DesugaringClassAnalyzer.java:144) в com.android.builder.desugaring.DesugaringClassAnalyzer.analyzeJar (DesugaringClassAnalyzer.java:92) в com.android.builder.desugaring.DesugaringClassAnalyzer.analyze (DesugaringClassAnalyzer.java:63) в com.android.build.gradle.internal.transforms.DesugarIncrementalTransformHelper.lambda $ getInitalGraphData $ 4 (DesugarIncrementalTransformHelper.java:150) в java.util.concurrent.ForkJoinTask $ AdaptedCallable.exec (ForkJoinTask.java:1424) в java.util.concurrent.ForkJoinTask.doExec (ForkJoinTask.java:289) в java.util.concurrent.ForkJoinPool $ WorkQueue.runTask (ForkJoinPool.java:1056) в java.util.concurrent.ForkJoinPool.runWorker (ForkJoinPool.java:1692) в java.util.concurrent.ForkJoinWorkerThread.run (ForkJoinWorkerThread.java:157)

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Не уверен, сработает ли это для вашего случая, но в моем случае добавление retrolambda в проект устранило проблемы. (Лямбда - это единственная языковая особенность, которую я ищу.)

Единственным побочным эффектом является сценарий сборки, который выдает рекомендацию удалять retrolambda во время каждой компиляции, и я действительно ожидаю, что это будет временное решение, пока Google не исправит проблему.

0 голосов
/ 05 января 2019

в соответствии с этим: Использование функций языка Java 8 Вы можете иметь только

Подмножество функций языка Java 8, которые зависят от версии платформы.

Вы можете попытаться поднять minSdkVersion и посмотреть, поможет ли он (24 или выше).

Android Studio не поддерживает все функции языка Java 8, но в будущих выпусках IDE добавляются и другие функции. В зависимости от того, какой minSdkVersion вы используете, доступны определенные функции и API.

...