Skip to content

Instantly share code, notes, and snippets.

@colabug
Created July 23, 2012 20:03
Show Gist options
  • Save colabug/3165888 to your computer and use it in GitHub Desktop.
Save colabug/3165888 to your computer and use it in GitHub Desktop.
Chariot Blog Android Unit Testing With Robolectric
@Test
public void buttonClickShouldStartNewActivity() throws Exception {
Button button = activity.findViewById(R.id.next_screen_button);
button.performClick();
Intent intent = NewActivity.createIntent(activity);
assertThat(activity, new StartedMatcher(intent));
}
@Test
public void imageShouldEqualResourceDrawable() throws Exception {
ImageView image = (ImageView) activity.findViewById(R.id.sun_earth_image);
assertThat(image.getDrawable(),
equalTo(getResourceDrawable(R.drawable.sun_earth)));
}
@Test
public void shouldHaveNewFragment() throws Exception
{
NewActivity newActivity = new NewActivity();
assertNotNull( newActivity.getSupportFragmentManager().findFragmentById( R.id.new_fragment ) );
}
<!--Fragment XML declaration-->
<fragment
android:id="@+id/new_fragment"
android:name="com.colabug.NewFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
// Test that certain functionality was called
@Test
public void buttonShouldDoSomethingCrazy() throws Exception {
button.performClick();
assertTrue(activity.conditionWasMet);
}
// Mock class
class TestNewActivity extends NewActivity {
protected boolean conditionWasMet = false;
@Override
protected void doSomethingCrazy() {
conditionWasMet = true;
}
}
// Original class
public class NewActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.new_activity);
View button = findViewById(R.id.crazy_button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
doSomethingCrazy();
}
});
}
protected void doSomethingCrazy() {}
}
@Test
public void shouldNotBeNull() throws Exception {
MyActivity activity = new MyActivity();
assertNotNull(activity);
}
@Test
public void shouldHaveWelcomeText() throws Exception {
TextView welcomeText = (TextView) activity.findViewById(R.id.welcome_text_view);
assertViewIsVisible(welcomeText);
}
public class ProjectTestRunner extends RobolectricTestRunner {
public ProjectTestRunner(Class<?> testClass) throws InitializationError {
super(testClass);
}
public static String getResourceString(int resourceId) {
return Robolectric.application.getApplicationContext().getString(resourceId);
}
public static Drawable getResourceDrawable(int resourceId) {
return Robolectric.application.getApplicationContext().getResources().getDrawable(resourceId);
}
public static void assertViewIsVisible(View view) {
assertNotNull(view);
assertThat(view.getVisibility(), equalTo(View.VISIBLE));
}
public static void assertViewIsHidden(View view) {
assertNotNull(view);
assertThat(view.getVisibility(), equalTo(View.GONE));
}
}
@Before
public void setUp() throws Exception {
MyActivity activity = new MyActivity();
activity.onCreate(null);
ImageView image = (ImageView) activity.findViewById(R.id.sun_earth_image);
Button button = (Button) activity.findViewById(R.id.next_screen_button);
}
@Test
public void shouldHaveHiddenButton() throws Exception {
assertViewIsHidden(button);
}
@Test
public void shouldShowButtonAfterImageClick() throws Exception {
image.performClick();
assertViewIsVisible(button);
}
@Test
public void welcomeTextShouldEqualResource() throws Exception {
TextView welcomeText = (TextView) activity.findViewById(R.id.welcome_text_view);
assertThat(welcomeText.getText().toString(),
equalTo(getResourceString(R.string.WELCOME_STRING)));
}
@Test
public void welcomeTextClickShouldToastUser() throws Exception {
TextView welcomeText = (TextView) activity.findViewById(R.id.welcome_text_view);
welcomeText.performClick();
assertThat(getTextOfLatestToast(),
equalTo(getResourceString(R.string.WELCOME_TOAST)));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment