enable Espresso tests to auto run, now there are x86 emulators

This commit is contained in:
Hans-Christoph Steiner 2019-01-07 21:12:53 +01:00
parent 22773f3de3
commit 3c185d6d64

View File

@ -21,8 +21,8 @@ import org.fdroid.fdroid.views.main.MainActivity;
import org.hamcrest.Matchers; import org.hamcrest.Matchers;
import org.junit.After; import org.junit.After;
import org.junit.AfterClass; import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@ -45,29 +45,36 @@ import static android.support.test.espresso.matcher.ViewMatchers.withText;
import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.not;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeTrue;
@Ignore
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class MainActivityEspressoTest { public class MainActivityEspressoTest {
public static final String TAG = "MainActivityEspressoTest"; public static final String TAG = "MainActivityEspressoTest";
/** /**
* Emulators older than {@code android-25} seem to fail at running Espresso tests.
* <p>
* ARM emulators are too slow to run these tests in a useful way. The sad * ARM emulators are too slow to run these tests in a useful way. The sad
* thing is that it would probably work if Android didn't put up the ANR * thing is that it would probably work if Android didn't put up the ANR
* "Process system isn't responding" on boot each time. There seems to be no * "Process system isn't responding" on boot each time. There seems to be no
* way to increase the ANR timeout. * way to increase the ANR timeout.
*/ */
private static boolean canRunEspresso() {
if (Build.VERSION.SDK_INT < 25
|| (Build.SUPPORTED_ABIS[0].startsWith("arm") && isEmulator())) {
Log.e(TAG, "SKIPPING TEST: ARM emulators are too slow to run these tests in a useful way");
return false;
}
return true;
}
@BeforeClass @BeforeClass
public static void classSetUp() { public static void classSetUp() {
Log.i(TAG, "setUp " + isEmulator() + " " + Build.SUPPORTED_ABIS[0]);
if (Build.SUPPORTED_ABIS[0].startsWith("arm") && isEmulator()) {
Log.e(TAG, "SKIPPING TEST: ARM emulators are too slow to run these tests in a useful way");
org.junit.Assume.assumeTrue(false);
return;
}
IdlingPolicies.setIdlingResourceTimeout(10, TimeUnit.MINUTES); IdlingPolicies.setIdlingResourceTimeout(10, TimeUnit.MINUTES);
IdlingPolicies.setMasterPolicyTimeout(10, TimeUnit.MINUTES); IdlingPolicies.setMasterPolicyTimeout(10, TimeUnit.MINUTES);
if (!canRunEspresso()) {
return;
}
Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
try { try {
UiDevice.getInstance(instrumentation) UiDevice.getInstance(instrumentation)
@ -105,6 +112,11 @@ public class MainActivityEspressoTest {
|| "google_sdk".equals(Build.PRODUCT); || "google_sdk".equals(Build.PRODUCT);
} }
@Before
public void setUp() {
assumeTrue(canRunEspresso());
}
/** /**
* Placate {@link android.os.StrictMode} * Placate {@link android.os.StrictMode}
* *