Cómo usar findViewById () en robolectric

Simplemente quiero probar con robolectric si cierta vista es visible en un fragmento. Mi prueba de unidad se ve así:

ActivityController controller = Robolectric.buildActivity(FragmentActivity.class);
FragmentActivity activity = (FragmentActivity) controller.create().start().resume().visible().get();

F fragment = new MyFragment();
activity.getSupportFragmentManager().beginTransaction()
        .add(fragment, FRAGMENT_TAG).commit();


View view = fragment.getView().findViewById(R.id.my_view);
assertEquals(view.getVisibility(), View.VISIBLE);

Estoy usando el último complemento Android Gradle 1.1.3, Robolectirc 2.4 y el complemento Robolectric Gradle 1.0.1 y mi prueba de unidad está en eltest carpeta (noandroidTest) No puedo compilar ese código, porque el compilador no puede resolverR.java.

Mibuild.gradle:

buildscript {
  repositories {
    jcenter()
  }

  dependencies {
    classpath 'com.android.tools.build:gradle:1.1.3'
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
    classpath 'org.robolectric:robolectric-gradle-plugin:1.0.1'
  }
}

apply plugin: 'com.android.library'
apply plugin: 'com.neenbedankt.android-apt'
apply plugin: 'org.robolectric'


android { ... }

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])

  // Testing
  testCompile 'org.robolectric:robolectric:2.4'
  testCompile 'junit:junit:4.12'

  // Other dependencies
  ...
}

¿Cómo escribo tal prueba unitaria con robolectric?

Actualización: Aquí está el código completo:

public class TestFragment extends Fragment {

  @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_listview_ptr, container, false);
  }
}


public class MyFragmentTest {

  private static final String FRAGMENT_TAG = "fragment";
  private ActivityController controller;
  private FragmentActivity activity;

  @Test
  protected void displaysContentView(boolean pullToRefreshSupported) {

    controller = Robolectric.buildActivity(FragmentActivity.class);
    activity = (FragmentActivity) controller.create().start().resume().visible().get();
    Fragment fragment = new TestFragment();

    FragmentManager manager = activity.getSupportFragmentManager();
    manager.beginTransaction()
        .add(fragment, FRAGMENT_TAG).commit();

    // Compile errors here
    View loadingView = fragment.getView().findViewById(R.id.loadingView);
    View contentView = fragment.getView().findViewById(R.id.contentView);
    View errorView = fragment.getView().findViewById(R.id.loadingView);

    Assert.assertNotSame(loadingView.getVisibility(), View.VISIBLE);
    Assert.assertNotSame(errorView.getVisibility(), View.VISIBLE);
    Assert.assertEquals(contentView.getVisibility(), View.VISIBLE);
  }
}

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">


<android.support.v4.widget.SwipeRefreshLayout
      android:id="@+id/pull_to_refresh"
      android:layout_width="match_parent"
      android:layout_height="match_parent">

    <ListView
        android:id="@+id/contentView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:cacheColorHint="#00000000"
        android:divider="@null"
        android:fadingEdge="none"
        android:fastScrollEnabled="false"
        android:footerDividersEnabled="false"
        android:headerDividersEnabled="false"
        android:listSelector="@color/transparent"
        android:drawSelectorOnTop="true"
        android:smoothScrollbar="false"
        android:scrollbars="none"/>
</android.support.v4.widget.SwipeRefreshLayout>

<TextView
      android:id="@+id/errorView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:visibility="gone"
      android:text="@string/error_loading_retry"
      android:layout_gravity="center"
      android:gravity="center"
      android:layout_centerInParent="true"
      android:drawableTop="@drawable/error_no_connection"
      android:drawablePadding="12dp"
      android:textColor="@color/gray_dark"
      android:padding="16dp"
      />

<fr.castorflex.android.circularprogressbar.CircularProgressBar
      android:id="@+id/loadingView"
      android:layout_width="40dp"
      android:layout_height="40dp"
      android:indeterminate="true"
      android:layout_gravity="center"
      android:layout_centerInParent="true"
      android:visibility="gone"
      />

</FrameLayout>

El código se puede encontrar aquí:https://github.com/sockeqwe/RobolectircTest

Respuestas a la pregunta(1)

Su respuesta a la pregunta