Unit Testing: Android Test Framework vs Robolectric Test Framework
Ok, so I don’t have a huge amount of testing experience but I really want to get hands on with this project. I’m going to start off with Unit Tests and move on from there. For testing an Android application I have two options here:
- Native Android Test Framework
- Third-party Robolectric Test Framework
After doing some research on both, I settled on using the Robolectric Framework. My reasoning behind this is that the Robolectric JUnit tests run on a local JVM (my lappy), whereas the Android Test Framework requires an Android device / emulator. This isn’t a huge problem, but it does slow down development (as tests running on my machine will be considerably faster in comparison to an emulator). On the other hand, using a real device gives you a more realistic portrayal of test execution time on an actual device rather than my local JVM. In summary, here’s why I’m choosing Robolectric:
- Speed: Tests run on local JVM rather than emulator/device.
- Flexibility: I can mock almost any Android feature (sqlite etc)
- JUnit 4, Android Test Framework is still on JUnit3
To conclude, I’m using Robolectric for development purposes but when the system moves from the development stage to the release stage, I may use the native testing framework for a more realistic test experiance.