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

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Robolectric Adventure


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:

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


Total Views
On SlideShare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 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• JUnit dependency before Android (IntelliJ IDEA)• @RunWith( RobolectricTestRunner.class)
  • 11. Biggest Issue of Robolectric • Lack of documentation • Not many examples • Unscheduled releases • 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• 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 ) { 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)• /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!