问题描述
package com.github.avanlex;
import android.Manifest;
import android.app.Activity;
import androidx.test.ext.junit.rules.ActivityScenarioRule;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
import androidx.test.rule.ActivityTestRule;
import androidx.test.rule.GrantPermissionRule;
import com.squareup.spoon.Spoon;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.action.ViewActions.closeSoftKeyboard;
import static androidx.test.espresso.action.ViewActions.typeText;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
@RunWith(AndroidJUnit4.class)
@LargeTest
public class AnagramsTextReverseBehaviorTest {
public static final String STRING_TO_BE_TYPED = "espresso";
public static final String STRING_TO_BE_EXPECTED = "osserpse";
private static final String PACKAGE_NAME = "com.github.avanlex";
/*********************************************************************************************
* Google recommends using ActivityScenarioRule instead ActivityTestRule,but I don't kNow How?
*********************************************************************************************
*/
@Rule public ActivityScenarioRule<MainActivity> activityScenarioRule
= new ActivityScenarioRule<>(MainActivity.class);
@Test
public void changeText_sameActivity() {
// Type text and then press the button.
onView(withId(R.id.tietStringToReverse))
.perform(typeText(STRING_TO_BE_TYPED),closeSoftKeyboard());
onView(withId(R.id.btnReverse)).perform(click());
Activity activity = main.getActivity(); // GET ACTIVITY IS DEPRECATED :(
activityScenarioRule.getScenario().onActivity(act -> {
// CAUSES ERROR
Spoon.screenshot(act,"changeText_sameActivity");
});
//Spoon.screenshot(activity,"changeText_sameActivity");
// Check that the text was reversed.
onView(withId(R.id.tietReversedString)).check(matches(withText(STRING_TO_BE_EXPECTED)));
}
}
我正在尝试获取“活动”并传递给Spoon进行屏幕截图,但Google文档说
getActivity()
中的androidx.test.rule.ActivityTestRule
已过时。
我尝试过:
@Rule public final ActivityTestRule<MainActivity> main = new ActivityTestRule(MainActivity.class,true);
activityScenarioRule.getScenario().onActivity(act -> {
// CAUSES ERROR: java.util.concurrent.ExecutionException:
// java.lang.IllegalArgumentException: Could not find test class!
Spoon.screenshot(act,"changeText_sameActivity");
});
我发现获得活动的唯一方法导致应用程序崩溃。 请帮忙?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)