Your SlideShare is downloading. ×
0
Robolectric Adventure
Robolectric Adventure
Robolectric Adventure
Robolectric Adventure
Robolectric Adventure
Robolectric Adventure
Robolectric Adventure
Robolectric Adventure
Robolectric Adventure
Robolectric Adventure
Robolectric Adventure
Robolectric Adventure
Robolectric Adventure
Robolectric Adventure
Robolectric Adventure
Robolectric Adventure
Robolectric Adventure
Robolectric Adventure
Robolectric Adventure
Robolectric Adventure
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Robolectric Adventure

1,277

Published 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

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,277
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
18
Comments
0
Likes
3
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!

×