我遇到了测试我的android应用程序的问题。
我有2个testCase类,如果我单独执行它们,没有问题,测试运行直到结束。但是,如果我做我的测试项目“右键”,选择“运行方式Android的JUnit测试”我有一个消息测试运行失败:由于'进程崩溃'导致测试运行失败。当测试多个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.'
参见下文对我的两个testClasses:
第一测试类
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);
}
}
与第二:
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);
}
}
正如你可以看到我的测试都没有这么复杂,即使我“WIP e用户数据“,当我启动我的模拟器时,如果我执行两个测试,则会有相同的消息。
哦,顺便说一下,在模拟器下的Android 2.1运行,这是我的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>
编辑: 我的日志猫:
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'
确保被测试的这两个活动可以在实际应用下正确启动(即没有runTime异常泄露)。看看你是否能从Logcat得到更多有趣的消息。 – yorkw 2012-03-28 00:32:06
嗨,感谢您的评论,仪器仪表下的两项活动在应用程序中正常启动。当我执行应用程序时,没有例外。如果我分开执行这两个测试,没有例外,只有当我同时执行两个testClass时才会发生异常 – 2012-03-28 07:14:03
当您收到此消息时,Logcat中应该显示更多详细信息_Instrumentation运行失败,原因是“进程崩溃”。 '_显示在控制台中。发布您的Logcat将有助于调查您的问题。 – yorkw 2012-03-28 09:48:40