Droid con 2013 workshop unit testing in android [robolectirc]

13

Click here to load reader

description

The presentation we did as part of DroidCon 2013 Workshop

Transcript of Droid con 2013 workshop unit testing in android [robolectirc]

Page 1: Droid con 2013 workshop   unit testing in android [robolectirc]

Unit Testing Android Applications

Leena SNHead of Engineering@leenasn

Krishnaprasad RSoftware Architect@krikrn

Multunus Software Pvt. Ltd.Agile Software Development@multunus

Page 2: Droid con 2013 workshop   unit testing in android [robolectirc]

Demo of AndroidUnitTestCase

Page 3: Droid con 2013 workshop   unit testing in android [robolectirc]

AndroidInstrumentationTestCase

● Extension to JUnit● Provides wrappers for instantiating Activities ● Provide methods for interacting with

Activities

Page 4: Droid con 2013 workshop   unit testing in android [robolectirc]

The Problem

● Slow tests● Resulting in slow iterations

Page 5: Droid con 2013 workshop   unit testing in android [robolectirc]

The Solution

● Mocking ● But its not easy :(

Page 6: Droid con 2013 workshop   unit testing in android [robolectirc]

● Google has stripped all the classes with android.jar with RuntimeException(“Stub”)

● Most classes and methods are final● Non public constructors● Lack of interfaces● Many static methods

Mocking is Hard because..

Page 7: Droid con 2013 workshop   unit testing in android [robolectirc]

● Faster tests - runs in JVM● Emulates Android SDK and Resources

Why Robolectric?

Page 8: Droid con 2013 workshop   unit testing in android [robolectirc]

Lets see it in action!

Page 9: Droid con 2013 workshop   unit testing in android [robolectirc]

● Emulates Android SDK, modified to run it on JVM Using○ Shadow Objects○ View and Resource Loading

How it works

Page 10: Droid con 2013 workshop   unit testing in android [robolectirc]

● Extending Robolectric is easy too● Awesome Community Support

What is Special

Page 11: Droid con 2013 workshop   unit testing in android [robolectirc]

● Never runs on actual device as it emulates the environment

● It can test small units, so can not replace automated integration tests

● The above are for purpose :)

What Robolectric is NOT

Page 12: Droid con 2013 workshop   unit testing in android [robolectirc]

Summary