Robolectric Adventure

  • 1,134 views
Uploaded on

My Robolectric overview done on Android meet-up hosted by Xebia …

My Robolectric overview done on Android meet-up hosted by Xebia

The final code from the presentation with additional examples will be here:
https://github.com/emartynov/robolectric-presentation

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,134
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
16
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Robolectric Survival Guide
  • 2. eBuddy• 2009 Chat (IM)• 2011 XMS• 2012 We started with RobolectricANDROID PRODUCTS HISTORY
  • 3. Android!
  • 4. Relationships• Java• Maven• Android• Unit tests
  • 5. First Android JUnit Testimport org.junit.Before;import org.junit.Test;import static org.fest.assertions.api.Assertions.assertThat;public class MainActivityTest { private MainActivity activity; @Before public void setUp () throws Exception { activity = new MainActivity(); activity.onCreate( null ); } @Test public void checkInitialTexts () throws Exception { assertThat( activity.downloadButton.getText() ).isEqualTo( "Download" ); }}
  • 6. First Android JUnit Test
  • 7. Android Testing Options• No tests• POJO• Instrumental tests• Android sources• Mock Android• Robolectric!
  • 8. What is inside• Parses resources• Intercepts loading Android classes• Rewrites method bodies with Javassist• Binds shadow objects to new Android objects• Proxies modified objects
  • 9. First Robolectric Test
  • 10. Key Points from Demo #1• Correct path to SDK in the local.properties• JUnit dependency before Android (IntelliJ IDEA)• @RunWith( RobolectricTestRunner.class)
  • 11. Biggest Issue of Robolectric • Lack of documentation • Not many examples • Unscheduled releases • http://robolectric.blogspot.nl/ 2011/02/how-to-work-on- robolectric-in-parallel.html
  • 12. Robolectric Drawbacks• Sometimes magic• PowerMock integration• Time of run for the first test
  • 13. Shadowing• http://robolectric.blogspot.nl/2 011/01/how-to-create-your- own-shadow-classes.html• Bind shadow class• Use own Runner instead of Robolectric• (Submit pull request)
  • 14. Dependency Injection
  • 15. RoboGuice 2.0public class MainActivity extends RoboActivity implements View.OnClickListener{ @Inject Bus bus; @Override public void onCreate( Bundle savedInstanceState ) { bus.register( this ); } @Override public void onClick( View view ) { bus.post( new DownloadDataEvent( urlInput.getText().toString() ) ); }}
  • 16. RoboGuice 2.0
  • 17. Key Points from Demo #2• InjectingTestRunner• Own AbstractModule implementation• Run injections before every test method
  • 18. Android Real Jar (Robolectric 2.0)• http://robolectric.blogspot.nl /2011/08/using-robolectric- with-real-android.html• Robolectric 2.0 alpha
  • 19. Robolectric or not Robolectric• Not a question for me• Follow industry
  • 20. Thank you!