Add test for BundleSavedState

pull/87/merge
Alinson S. Xavier 8 years ago
parent ab09eb8a03
commit 94025c5262

@ -120,6 +120,12 @@ uninstall_apk() {
$ADB uninstall ${PACKAGE_NAME}
}
install_test_butler() {
log_info "Installing Test Butler"
$ADB install tools/test-butler-app-1.3.1.apk
$ADB uninstall com.linkedin.android.testbutler
}
install_apk() {
if [ ! -z $UNINSTALL_FIRST ]; then
uninstall_apk
@ -141,7 +147,7 @@ install_test_apk() {
run_instrumented_tests() {
log_info "Running instrumented tests"
$ADB shell am instrument \
-r -e coverage true -e size medium \
-r -e coverage true \
-w ${PACKAGE_NAME}.test/android.support.test.runner.AndroidJUnitRunner \
> ${OUTPUTS_DIR}/instrument.txt
@ -197,6 +203,7 @@ run_local_tests() {
run_adb_as_root
build_apk
build_instrumentation_apk
install_test_butler
install_apk
install_test_apk
run_instrumented_tests

@ -92,6 +92,9 @@ dependencies {
androidTestCompile 'com.google.dagger:dagger:2.9'
androidTestCompile "org.mockito:mockito-android:2.8.9"
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
androidTestCompile 'com.linkedin.testbutler:test-butler-library:1.3.1'
implementation('com.opencsv:opencsv:3.9') {
exclude group: 'commons-logging', module: 'commons-logging'
@ -134,7 +137,7 @@ task coverageReport(type: JacocoReport) {
def androidClasses = "${buildDir}/intermediates/classes/debug"
def jvmExecData = "${buildDir}/jacoco/testDebugUnitTest.exec"
def connectedExecData = "${buildDir}/outputs/code-coverage/connected/coverage.ec"
sourceDirectories = files(androidSrc)
classDirectories = files(fileTree(dir: androidClasses, excludes: excludes))
executionData = files(jvmExecData, connectedExecData)

@ -0,0 +1,58 @@
/*
* Copyright (C) 2017 Álinson Santos Xavier <isoron@gmail.com>
*
* This file is part of Loop Habit Tracker.
*
* Loop Habit Tracker is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* Loop Habit Tracker is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits;
import android.content.*;
import android.support.test.uiautomator.*;
import com.linkedin.android.testbutler.*;
import org.junit.*;
import static android.support.test.InstrumentationRegistry.*;
import static android.support.test.uiautomator.UiDevice.*;
public class BaseUIAutomatorTest
{
static final String PKG = "org.isoron.uhabits";
protected UiDevice device;
@Before
public void setUp()
{
TestButler.setup(getTargetContext());
TestButler.verifyAnimationsDisabled(getTargetContext());
device = getInstance(getInstrumentation());
}
@After
public void tearDown()
{
TestButler.teardown(getTargetContext());
}
protected void startActivity(Class cls)
{
Intent intent = new Intent();
intent.setComponent(new ComponentName(PKG, cls.getCanonicalName()));
getContext().startActivity(intent);
}
}

@ -0,0 +1,45 @@
/*
* Copyright (C) 2017 Álinson Santos Xavier <isoron@gmail.com>
*
* This file is part of Loop Habit Tracker.
*
* Loop Habit Tracker is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* Loop Habit Tracker is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits.integration;
import org.isoron.uhabits.*;
import org.isoron.uhabits.activities.about.*;
import org.isoron.uhabits.activities.habits.list.*;
import org.junit.*;
import static java.lang.Thread.*;
public class SavedStateTest extends BaseUIAutomatorTest
{
/**
* Make sure that the main activity can be recreated by using
* BundleSavedState after being destroyed. See bug:
* https://github.com/iSoron/uhabits/issues/287
*/
@Test
public void testBundleSavedState() throws Exception
{
startActivity(ListHabitsActivity.class);
device.waitForIdle();
startActivity(AboutActivity.class);
sleep(1000);
device.pressBack();
}
}
Loading…
Cancel
Save