From fc21d2038f76c73ca8c1e3bd1408a7aaea2428a6 Mon Sep 17 00:00:00 2001 From: Jake McGinty Date: Tue, 30 Dec 2014 16:49:57 -0800 Subject: [PATCH] Add first Espresso interaction test // FREEBIE --- AndroidManifest.xml | 1 - .../securesms/RegistrationActivityTest.java | 24 ++++++++++++ .../RoutedInstrumentationTestCase.java | 37 +++++++++++++++++++ .../CanonicalAddressDatabaseTest.java | 2 +- .../util/PhoneNumberFormatterTest.java | 3 +- .../thoughtcrime/securesms/util/UtilTest.java | 9 ----- build.gradle | 24 ++++++++++-- 7 files changed, 85 insertions(+), 15 deletions(-) create mode 100644 androidTest/java/org/thoughtcrime/securesms/RegistrationActivityTest.java create mode 100644 androidTest/java/org/thoughtcrime/securesms/RoutedInstrumentationTestCase.java delete mode 100644 androidTest/java/org/thoughtcrime/securesms/util/UtilTest.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index fda57ae89b..5e368ad096 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -329,6 +329,5 @@ - diff --git a/androidTest/java/org/thoughtcrime/securesms/RegistrationActivityTest.java b/androidTest/java/org/thoughtcrime/securesms/RegistrationActivityTest.java new file mode 100644 index 0000000000..8f0feb7fc2 --- /dev/null +++ b/androidTest/java/org/thoughtcrime/securesms/RegistrationActivityTest.java @@ -0,0 +1,24 @@ +package org.thoughtcrime.securesms; + +import static android.support.test.espresso.Espresso.*; +import static android.support.test.espresso.action.ViewActions.*; +import static android.support.test.espresso.matcher.ViewMatchers.*; +import static android.support.test.espresso.assertion.ViewAssertions.*; + +import android.test.suitebuilder.annotation.LargeTest; + +@LargeTest +public class RegistrationActivityTest extends RoutedInstrumentationTestCase { + private final static String TAG = RegistrationActivityTest.class.getSimpleName(); + + public RegistrationActivityTest() { + super(); + } + + @SuppressWarnings("unchecked") + public void testRegistrationButtons() throws Exception { + waitOn(RegistrationActivity.class); + onView(withId(R.id.registerButton)).check(matches(isDisplayed())); + onView(withId(R.id.skipButton)).check(matches(isDisplayed())).perform(click()); + } +} diff --git a/androidTest/java/org/thoughtcrime/securesms/RoutedInstrumentationTestCase.java b/androidTest/java/org/thoughtcrime/securesms/RoutedInstrumentationTestCase.java new file mode 100644 index 0000000000..7587078bea --- /dev/null +++ b/androidTest/java/org/thoughtcrime/securesms/RoutedInstrumentationTestCase.java @@ -0,0 +1,37 @@ +package org.thoughtcrime.securesms; + +import android.app.Activity; +import android.app.Instrumentation.ActivityMonitor; +import android.preference.PreferenceManager; +import android.test.ActivityInstrumentationTestCase2; +import android.util.Log; + +import org.thoughtcrime.securesms.crypto.MasterSecretUtil; + +public class RoutedInstrumentationTestCase extends ActivityInstrumentationTestCase2 { + private static final String TAG = RoutedInstrumentationTestCase.class.getSimpleName(); + + public RoutedInstrumentationTestCase() { + super(RoutingActivity.class); + } + + @Override + public void setUp() throws Exception { + System.setProperty("dexmaker.dexcache", getInstrumentation().getTargetContext().getCacheDir().getPath()); + super.setUp(); + clearSharedPrefs(); + getActivity(); + } + + protected void clearSharedPrefs() { + PreferenceManager.getDefaultSharedPreferences(getInstrumentation().getTargetContext()) + .edit().clear().commit(); + getInstrumentation().getTargetContext().getSharedPreferences(MasterSecretUtil.PREFERENCES_NAME, 0) + .edit().clear().commit(); + } + + protected static void waitOn(Class clazz) { + Log.w(TAG, "waiting for " + clazz.getName()); + new ActivityMonitor(clazz.getName(), null, true).waitForActivityWithTimeout(10000); + } +} diff --git a/androidTest/java/org/thoughtcrime/securesms/database/CanonicalAddressDatabaseTest.java b/androidTest/java/org/thoughtcrime/securesms/database/CanonicalAddressDatabaseTest.java index eb5b78edc8..0d05570ff6 100644 --- a/androidTest/java/org/thoughtcrime/securesms/database/CanonicalAddressDatabaseTest.java +++ b/androidTest/java/org/thoughtcrime/securesms/database/CanonicalAddressDatabaseTest.java @@ -2,7 +2,7 @@ package org.thoughtcrime.securesms.database; import org.thoughtcrime.securesms.TextSecureTestCase; -import static org.fest.assertions.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThat; public class CanonicalAddressDatabaseTest extends TextSecureTestCase { private static final String AMBIGUOUS_NUMBER = "222-3333"; diff --git a/androidTest/java/org/thoughtcrime/securesms/util/PhoneNumberFormatterTest.java b/androidTest/java/org/thoughtcrime/securesms/util/PhoneNumberFormatterTest.java index cacbd1013b..c522da01a6 100644 --- a/androidTest/java/org/thoughtcrime/securesms/util/PhoneNumberFormatterTest.java +++ b/androidTest/java/org/thoughtcrime/securesms/util/PhoneNumberFormatterTest.java @@ -7,7 +7,8 @@ import junit.framework.AssertionFailedError; import org.thoughtcrime.securesms.TextSecureTestCase; import org.whispersystems.textsecure.api.util.InvalidNumberException; import org.whispersystems.textsecure.api.util.PhoneNumberFormatter; -import static org.fest.assertions.api.Assertions.assertThat; + +import static org.assertj.core.api.Assertions.assertThat; public class PhoneNumberFormatterTest extends TextSecureTestCase { private static final String LOCAL_NUMBER = "+15555555555"; diff --git a/androidTest/java/org/thoughtcrime/securesms/util/UtilTest.java b/androidTest/java/org/thoughtcrime/securesms/util/UtilTest.java deleted file mode 100644 index 79e8d3c58b..0000000000 --- a/androidTest/java/org/thoughtcrime/securesms/util/UtilTest.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.thoughtcrime.securesms.util; - -import android.test.AndroidTestCase; - -import static org.fest.assertions.api.Assertions.assertThat; - -public class UtilTest extends AndroidTestCase { - -} \ No newline at end of file diff --git a/build.gradle b/build.gradle index d9ac8aa4be..06bfb9527a 100644 --- a/build.gradle +++ b/build.gradle @@ -59,9 +59,19 @@ dependencies { compile 'org.whispersystems:jobmanager:0.10.0' compile 'org.whispersystems:libpastelog:1.0.4' - androidTestCompile 'com.squareup:fest-android:1.0.8' - androidTestCompile 'com.google.dexmaker:dexmaker:1.1' - androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.1' + androidTestCompile 'com.google.dexmaker:dexmaker:1.2' + androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2' + + androidTestCompile ('org.assertj:assertj-core:1.7.1') { + exclude group: 'org.hamcrest', module: 'hamcrest-core' + } + androidTestCompile ('com.squareup.assertj:assertj-android:1.0.0') { + exclude group: 'org.hamcrest', module: 'hamcrest-core' + } + androidTestCompile ('com.android.support.test.espresso:espresso-core:2.0') { + exclude group: 'javax.inject' + } + androidTestCompile 'com.android.support.test:testing-support-lib:0.1' compile project(':libtextsecure') } @@ -112,6 +122,7 @@ android { minSdkVersion 9 targetSdkVersion 19 + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" buildConfigField "long", "BUILD_TIMESTAMP", System.currentTimeMillis() + "L" } @@ -120,6 +131,13 @@ android { targetCompatibility JavaVersion.VERSION_1_7 } + packagingOptions { + exclude 'LICENSE.txt' + exclude 'LICENSE' + exclude 'NOTICE' + exclude 'asm-license.txt' + } + signingConfigs { release }