Testing Android
Upcoming SlideShare
Loading in...5

Testing Android



Learn about unit testing Android applications

Learn about unit testing Android applications



Total Views
Views on SlideShare
Embed Views



4 Embeds 96

http://www.slideshare.net 86
http://www.linkedin.com 5
https://www.linkedin.com 4
http://translate.googleusercontent.com 1



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Testing Android Testing Android Presentation Transcript

  • TESTING ANDROID Marc Chung OpenRain marc.chung@openrain.com Friday, August 28, 2009 1
  • Agenda Introduce Android testing concepts Unit and mock testing + Demos Android testing overview + Demos Q&A Friday, August 28, 2009 2
  • Unit testing in Java JUnit is the most popular framework Most projects, frameworks, IDEs will ship with support Out of the box, Eclipse IDE has good JUnit support There are many frameworks http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#Java Friday, August 28, 2009 3 View slide
  • Unit testing demo Twitter Demo Uses JUnit Login/password Update status Friday, August 28, 2009 4 View slide
  • public void testStatusUpdate() { try { IMyTwitter twitter = new MyTwitter("supertesting", "s3!kretep@s5"); TwitterClient client = new TwitterClient(twitter); String update = "Hello Phoenix Android"; client.post(update); Assert.assertEquals(update, client.getLatestPost()); } catch (TwitterException te) { Assert.fail("Shouldn't see this because the credentials are correct"); } } Friday, August 28, 2009 5
  • Mock Objects in Java A Mock is “fake” object which mimics real objects for the purpose of testing Mimics real objects for testing Such as a web service request Mocking is a style of testing http://martinfowler.com/articles/mocksArentStubs.html Friday, August 28, 2009 6
  • Mock testing demo Twitter Demo Uses EasyMock Avoid issuing live requests Friday, August 28, 2009 7
  • public void testStatusUpdate() { String updateStatus = "Hello Phoenix Android"; IMyTwitter mockedTwitter = EasyMock.createMock(IMyTwitter.class); expect(mockedTwitter.getStatus()).andReturn(null); expect(mockedTwitter.updateStatus(updateStatus)).andReturn(null); replay(mockedTwitter); TwitterClient client = new TwitterClient(mockedTwitter); client.post(updateStatus); Assert.assertEquals(updateStatus, client.getLatestPost()); verify(mockedTwitter); } Friday, August 28, 2009 8
  • Android Testing Testing Android requires JUnit Write tests to run and test parts of your application InstrumentationTestRunner runs your test as an application Executes code on emulator Friday, August 28, 2009 9
  • Setting up your project Using the command line tool will create a tests/ directory inside the project. android create project -t 3 -n hello_world -p hello_world -a HelloWorld -k com.openrain.hello_world Use Eclipse manually. Doesn’t create a tests/ directory Manually create two projects. Friday, August 28, 2009 10
  • Running Android tests Two ways to run your tests Command line runner Eclipse runner Friday, August 28, 2009 11
  • AndroidTestCase unit testing faster and easier to boot strap only have access to a Context useful for asserting layout, position, and components Friday, August 28, 2009 12
  • ActivityInstrumentationTestCase functional unit testing access to a real live Activity instance may simulate key events slower Friday, August 28, 2009 13
  • Instrumentation Demo Functional tests Test drives the Activity Friday, August 28, 2009 14
  • Other Android tests ServiceTestCase For testing services ActivityUnitTestCase and ActivityTestCase For testing an Activity in isolation ApplicationTestCase Full integration testing Friday, August 28, 2009 15
  • More Android testing Testing APIs http://developer.android.com/reference/android/test/package-summary.html android.test android.test.mock Friday, August 28, 2009 16
  • Tips Isolate and test non-Android code separately. Functional tests use live objects. Slow, but reliable. Javadoc is your friend Friday, August 28, 2009 17
  • Future topics Code coverage tools Continuous integration tools Performance testing Friday, August 28, 2009 18
  • Thank you Join Phoenix Android Mailing list http://phoenixandroid.com Follow me on Twitter: @heisenthought Friday, August 28, 2009 19