J'ai un problème d'exécution android tests d'unité sur android applications qui utilisent l'a récemment publié Fragment de support de l'API. Lorsque le test est exécuté avec une FragmentActivity l'erreur suivante s'affiche dans le journal et la classe ne parvient pas à charger. Lorsqu'il est exécuté sur un cours identique, mais un dérivé de l'Activité, le test fonctionne très bien. Les deux classes fonctionnent correctement, comme les applications! Ce qui signifie que lorsque tout simplement invoqué ils afficheront leur disposition et leur fonction correctement. Le support de pot est une partie de la construction de chemin d'accès et inclus dans le projet.
Le problème que j'ai, c'est que la seule façon d'utiliser les fragments (et le soutien pre3.0 android) est d'utiliser FragmentActivity, mais si cela exclut les tests automatisés, à quoi bon cette bibliothèque.
4-05 18:00:11.276: WARN/dalvikvm(1095): Class resolved by unexpected DEX: Lcom/example/android/app/FragmentLayoutSupport;(0x406351a0):0x12e5c8 ref [Landroid/support/v4/app/FragmentActivity;] Landroid/support/v4/app/FragmentActivity;(0x406351a0):0x12e440
04-05 18:00:11.276: WARN/dalvikvm(1095): (Lcom/example/android/app/FragmentLayoutSupport; had used a different Landroid/support/v4/app/FragmentActivity; during pre-verification)
04-05 18:00:11.286: WARN/dalvikvm(1095): Unable to resolve superclass of Lcom/example/android/app/FragmentLayoutSupport; (49)
04-05 18:00:11.286: WARN/dalvikvm(1095): Link of class 'Lcom/example/android/app/FragmentLayoutSupport;' failed
04-05 18:00:11.286: ERROR/dalvikvm(1095): Could not find class 'com.example.android.app.FragmentLayoutSupport', referenced from method com.example.android.app.test.FrameLayoutTest.<init>
04-05 18:00:11.286: WARN/dalvikvm(1095): VFY: unable to resolve const-class 131 (Lcom/example/android/app/FragmentLayoutSupport;) in Lcom/example/android/app/test/FrameLayoutTest;
Voici le code que j'ai construit pour illustrer le problème. Le cas de test essaie simplement de créer une instance de la classe sous test:
FrameLayoutTest.java
public class FrameLayoutTest extends
ActivityInstrumentationTestCase2<FragmentLayoutSupport> {
public FrameLayoutTest() {
super(FragmentLayoutSupport.class);
}
public void testActivityTestCaseSetUpProperly() {
assertNotNull("activity should be launched successfully", getActivity());
}
}
Les deux classes que j'ai créé sont comme suit et fragment_layout est vide LinearLayout:
FrameLayout.java
public class FragmentLayout extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_layout);
}
}
Et
FragmentLayoutSupport.java
public class FragmentLayoutSupport extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_layout);
}
}