Top Banner
An Overview of Android Testing Eric Oestrich BohConf 7/19/2013
37

Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Jul 08, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

An Overview of Android Testing

Eric Oestrich

BohConf7/19/2013

Page 3: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

You can test Android?

Page 4: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Regular Android testing leaves a lot to be

desired

Page 5: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Robolectrichttp://robolectric.org/

Page 6: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Run tests on your development machine

Page 7: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

JUnit 4

Page 8: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Requires Maven

Page 9: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

IntelliJSupports maven projects

Page 10: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

EclipseShould just use IntelliJ

Page 11: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Android StudioUses gradle, not much support for

this yet

Page 12: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Downsides

Page 13: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Content Providers are still hard to test

Page 14: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Still somewhat newNot every area is able to be tested

nicely

Page 15: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Lack of Documentation

Page 16: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Extra Libraries You Should Consider

Page 17: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Hamcresthttp://hamcrest.org/JavaHamcrest/

Page 18: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Hamcrest● Nicer assertions than regular JUnit

Page 19: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

HamcrestassertThat(item.getId(), equalTo(itemId));

Page 20: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

FEST Androidhttps://github.com/square/fest-android

Page 21: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

FEST Android● Fluent assertions make test read nicely● FEST additions specific to Android

Page 22: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

FEST Android

assertThat(view.getVisibility(), equalTo(View.GONE));

vs

assertThat(view).isGone();

Page 23: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Awaitilityhttps://code.google.com/p/awaitility/

Page 24: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Awaitility● Handles testing asynchronous code nicely● Set timeouts

Page 25: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Awaitilitypublic void testActivityTitle() {

await().atMost(TIMEOUT_SECONDS, TimeUnit.SECONDS).until(

activityTitle(), equalTo("Notification"));

Spoon.screenshot(getActivity(), "activity_title");

}

Page 26: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Awaitilityprotected Callable<String> activityTitle() {

return new Callable<String>() {

@Override

public String call() throws Exception {

return mActivity.getTitle().toString();

}

};

}

Page 27: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Spoonhttps://github.com/square/spoon

Page 28: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Spoon● Take screenshots of app during test● Compiles to animated gif● Instrumentation tests

Page 29: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Spoonpublic void testActivity() {

Spoon.screenshot(getActivity(), "activity");

}

Page 30: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Spoon

http://square.github.io/spoon/sample/index.html

Page 31: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Continuous Integration

Page 32: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Jenkins Shell Scriptexport ANDROID_HOME=/var/lib/jenkins/tools/android-sdkmvn clean test --batch-mode

Page 33: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

Javadocs

Page 34: Android Testing An Overview of - OestrichAndroid Studio Uses gradle, not much support for this yet

JUnit Results