Ho riscontrato un problema con il test della mia applicazione Android.
Ho 2 classi di testCase, se li eseguo separatamente, non ci sono problemi, i test vengono eseguiti fino alla fine. Ma se faccio "right-click" sul mio progetto di test e scegliere "Esegui come Android Junit Test" Ho un messaggioEsecuzione test non riuscita: esecuzione strumentazione non riuscita a causa di "Processo in arresto anomalo". durante il test di più attività Android
Launching instrumentation android.test.InstrumentationTestRunner on device emulator-5554
[2012-03-27 15:56:27 - matroussedemaquillageTest] Collecting test information
[2012-03-27 15:56:31 - matroussedemaquillageTest] Test run failed: Instrumentation run failed due to 'Process crashed.'
vedi sotto per i miei due testClasses:
la prima classe di test
package fr.smardine.matroussedemaquillage.test;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.ImageSwitcher;
import fr.smardine.matroussedemaquillage.EntryPoint;
public class EntryPointTest extends
ActivityInstrumentationTestCase2<EntryPoint> {
private EntryPoint mActivity;
private ImageSwitcher mSwitcher;
public EntryPointTest() {
super("fr.smardine.matroussedemaquillage",
fr.smardine.matroussedemaquillage.EntryPoint.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
public void test2() {
assertEquals(2, 2);
}
}
e il secondo:
package fr.smardine.matroussedemaquillage.test;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.ImageView;
import fr.smardine.matroussedemaquillage.Main;
public class MainTest extends ActivityInstrumentationTestCase2<Main> {
private Main mActivity;
private ImageView btRemplir;
private ImageView btPerime;
private ImageView btNotes;
public MainTest() {
super("fr.smardine.matroussedemaquillage",
fr.smardine.matroussedemaquillage.Main.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
public void test1() {
assertEquals(1, 1);
}
}
Come si può vedere il mio test non sono così complicato, anche se i "wip e dati utente "quando lancio il mio emulatore, c'è lo stesso messaggio se eseguo i due test.
Oh, a proposito, l'emulatore eseguito con Android 2.1 e questo è il mio file AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="fr.smardine.matroussedemaquillage.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="7" />
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="fr.smardine.matroussedemaquillage" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner" />
</application>
</manifest>
Edit: mio log gatto:
I/ActivityManager(64): Start proc fr.smardine.matroussedemaquillage for added application fr.smardine.matroussedemaquillage: pid=510 uid=10029 gids={3003, 1015}
D/ddm-heap(510): Got feature list request D/dalvikvm(510): GC freed 5427 objects/420224 bytes in 90ms
D/dalvikvm(510): GC freed 6498 objects/506616 bytes in 79ms
D/dalvikvm(510): GC freed 7048 objects/567464 bytes in 90ms
D/dalvikvm(510): GC freed 8628 objects/503840 bytes in 73ms
I/System.out(510): Failed to open test.properties
I/AndroidRuntime(510): AndroidRuntime onExit calling exit(-1) –
D/Zygote(30): Process 510 exited cleanly (255)
I/ActivityManager(64): Process fr.smardine.matroussedemaquillage (pid 510) has died.
W/ActivityManager(64): Crash of app fr.smardine.matroussedemaquillage running instrumentation ComponentInfo{fr.smardine.matroussedemaquillage.test/android.test.InstrumentationTestRunner}
D/ActivityManager(64): Uninstalling process fr.smardine.matroussedemaquillage
D/AndroidRuntime(504): Shutting down VM
D/dalvikvm(504): DestroyJavaVM waiting for non-daemon threads to exit
D/dalvikvm(504): DestroyJavaVM shutting VM down
D/dalvikvm(504): HeapWorker thread shutting down
D/dalvikvm(504): HeapWorker thread has shut down
D/jdwp(504): JDWP shutting down net...
D/jdwp(504): Got wake-up signal, bailing out of select
I/dalvikvm(504): Debugger has detached; object registry had 1 entries
D/dalvikvm(504): VM cleaning up
D/dalvikvm(504): LinearAlloc 0x0 used 643668 of 5242880 (12%)
I/dalvikvm(504): JNI: AttachCurrentThread (from ???.???)
E/AndroidRuntime(504): ERROR: thread attach failed'
Assicurarsi che queste due attività in fase di test possano essere avviate correttamente nell'app effettiva sotto strumentazione (cioè nessuna eccezione runTime trapelata). Controlla se puoi ottenere un messaggio più interessante da Logcat. – yorkw
ciao, grazie per il tuo commento, le due attività sotto strumentazione vengono lanciate correttamente nell'app. quando eseguo l'app non c'è eccezione. Se eseguo i due test separatamente, non ci sono eccezioni, l'eccezione si verifica solo se eseguo entrambi i testClass allo stesso tempo –
Ci dovrebbero essere più dettagli mostrati in Logcat, quando si ottiene questo messaggio _Instrumentation esecuzione fallita a causa di 'Processo in crash. '_ mostrato in Console. Pubblica la tua Logcat aiuterebbe a indagare sul tuo problema. – yorkw