2012-08-06 4 views
0

J'ai fichier .apk et je veux le tester en utilisant robotiun et j'ai followed la procédure, mais quand je cours l'application en utilisant le test de junit je reçois une erreur comme Échec du test: L'exécution de l'instrumentation a échoué en raison de 'Processed crashed'.je ne peux pas exécuter mon cas de test avec robotium

Ceci est mon AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.metago.astro.test" android:versionCode="1" android:versionName="1.0"> 

    <uses-sdk android:minSdkVersion="15" /> 
    <uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />> 

    <instrumentation android:name="android.test.InstrumentationTestRunner" 
     android:targetPackage="com.metago.astro" /> 

    <application android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name"> 
     <uses-library android:name="android.test.runner" />  
    </application> 

</manifest> 

Mon fichier TestActivity.java est

 @SuppressWarnings("unchecked") 
    public class TestActivity extends ActivityInstrumentationTestCase2 {  
     private static final String TARGET_PACKAGE_ID = "com.metago.astro"; 
     private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.metago.astro.SplashActivity";  
     private static Class<?> launcherActivityClass; 
     static { 
      try { 
       launcherActivityClass = Class 
         .forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); 
      } catch (ClassNotFoundException e) { 
       throw new RuntimeException(e); 
      } 
     }  
     public TestActivity() throws ClassNotFoundException { 
      super(TARGET_PACKAGE_ID, Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME)); 
      } 

     private Solo solo; 

     @Override 
     protected void setUp() throws Exception { 
      solo = new Solo(getInstrumentation(), getActivity()); 
     }  
     public void testCanOpenSettings() { 
      solo.pressMenuItem(0); 
     }  
     @Override 
     public void tearDown() throws Exception { 
      solo.finishOpenedActivities(); 
     } 
    } 

Mon logcat est

 FATAL EXCEPTION: main 
     java.lang.ExceptionInInitializerError 
     at java.lang.Class.newInstanceImpl(Native Method) 
     at java.lang.Class.newInstance(Class.java:1319) 
     at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:4424) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
     at dalvik.system.NativeStart.main(Native Method) 
     Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: com.metago.astro.SplashActivity 
     at com.metago.astro.TestActivity.<clinit>(TestActivity.java:19) 
     ... 15 more 
     Caused by: java.lang.ClassNotFoundException: com.metago.astro.SplashActivity 
     at java.lang.Class.classForName(Native Method) 
     at java.lang.Class.forName(Class.java:217) 
     at java.lang.Class.forName(Class.java:172) 
     at com.metago.astro.TestActivity.<clinit>(TestActivity.java:17) 
     ... 15 more 
     Caused by: java.lang.NoClassDefFoundError: com/metago/astro/SplashActivity 
     Caused by: java.lang.ClassNotFoundException: com.metago.astro.SplashActivity 
     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
     ... 19 more 

Ligne n ° 17 est .forName (LAUNCHER_ACTIVITY_FULL_CLASSNAME)

+0

après la logcat –

+0

le logcat est affiché ci-dessus – Abhinai

+0

après le manifeste entier pour votre projet de test –

Répondre

1

Le nom du package de votre projet de test doit être différent du nom du package de l'application que vous souhaitez tester. Le nom du paquet doit être un identifiant unique. Dans votre application de test, vous devez utiliser quelque chose comme package="com.metago.astro.test"

, vous devrez peut-être ajouter la permission suivante:

<uses-permission android:name="android.permission.RUN_INSTRUMENTATION" /> 
+0

il est dit que l'exécution du test a échoué: Impossible de trouver le paquet cible d'instrumentation: com.metago.astro.test – Abhinai

+0

Non. Définissez 'targetPackage =" com.metago.astro "' mais définissez 'package =" com.metago.astro. test "' dans la première ligne du manifeste pour le projet de test. –

+0

merci monsieur, mais je reçois une autre erreur que l'exécution du test a échoué: l'exécution de l'instrumentation a échoué en raison de «processus écrasé». – Abhinai

Questions connexes