Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Testing mit Robolectric und FEST in Android Studio

Avatar for Onur Onur
July 14, 2014

Testing mit Robolectric und FEST in Android Studio

Talk von der Developer Week 2014

Testgetriebene Entwicklung unter Android ist mit Bordmitteln nicht ohne Weiteres möglich. Die Ausführung dieser Tests muss immer mit einem Nachteil auf einem Device/Emulator erfolgen: Schlechte Performance und umständliche Einrichtung.
Robolectric setzt hier an und führt die Tests in der Java Virtual Machine aus, ohne zwingenden Device oder Emulator. In Kombination mit FEST werden die Tests zudem semantisch klarer und sparen als Nebeneffekt auch deutlich Code ein.

Avatar for Onur

Onur

July 14, 2014

More Decks by Onur

Other Decks in Programming

Transcript

  1. • About me • Was dieser Talk nicht ist •

    Status Quo • Robolectric • FEST • Demo • Fazit
  2. @RunWith(RobolectricTestRunner.class) public class MyActivityTest { @Test public void clickingButton_shouldChangeResultsViewText() throws

    Exception { Activity activity = Robolectric.buildActivity(MyActivity.class).create().get(); Button pressMeButton = (Button) activity.findViewById(R.id.press_me_button); TextView results = (TextView) activity.findViewById(R.id.results_text_view); pressMeButton.performClick(); String resultsText = results.getText().toString(); assertThat(resultsText, equalTo("Testing Android Rocks!")); } }
  3. buildscript { dependencies { classpath 'org.robolectric:robolectric-gradle-plugin:0.11.+' } } robolectric {

    include '**/*Test.class' maxHeapSize = "2048m" } dependencies { androidTestCompile 'junit:junit:4.10' androidTestCompile 'org.robolectric:robolectric:2.3+' androidTestCompile 'com.squareup:fest-android:1.0.+' }
  4. @Test public void shouldTestView() { // ... assertEquals(View.VISIBLE, layout.getVisibility()); assertEquals(VERTICAL,

    layout.getOrientation()); assertEquals(4, layout.getChildCount()); assertEquals(SHOW_DIVIDERS_MIDDLE,layout.getShowDividers()); }