我在 Android Studio 3.2.1 和 Android Studio 3.4 上试过如果我在 gradle 文件中启用 Java 8 并运行 espresso 测试,我会收到以下错误:
java.lang.RuntimeExceptionCause: java.lang.RuntimeException
经过多次试验,我发现从 gradle 文件中删除 Java8 支持可以解决这个问题。
但是 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:任务':app:transformClassesWithDexBuilderForDebugAndroidTest'的执行失败。org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:103) org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73) .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。