我有一个问题,我的测试Android应用程序。 我有2 TestCase类,如果我单独执行它们,是没有问题的,测试运行,直到结束。但是,如果我愿意用鼠标右键单击我的测试项目,并选择为Android的JUnit测试运行我有一个消息
启动仪器android.test.InstrumentationTestRunner在设备模拟器-5554 [2012-03-27十五点56分27秒 - matroussedemaquillageTest]收集考试信息 [2012-03-27 15点56分三十一秒 - matroussedemaquillageTest]试运行失败:仪器仪表运行失败,原因是过程坠毁。
参见下文为我的两个testClasses:
第一个测试类
包fr.smardine.matroussedemaquillage.test; 进口android.test.ActivityInstrumentationTestCase2; 进口android.widget.ImageSwitcher; 进口fr.smardine.matroussedemaquillage.EntryPoint; 公共类EntryPointTest扩展 ActivityInstrumentationTestCase2<入口点> { 私人入口点mActivity; 私人ImageSwitcher mSwitcher; 公共EntryPointTest(){ 超(fr.smardine.matroussedemaquillage fr.smardine.matroussedemaquillage.EntryPoint.class); } @覆盖 保护无效设置()抛出异常{ super.setUp(); } @覆盖 保护无效tearDown的()抛出异常{ super.tearDown(); } 公共无效的test2(){ 的assertEquals(2,2); } }和第二个:
包fr.smardine.matroussedemaquillage.test; 进口android.test.ActivityInstrumentationTestCase2; 进口android.widget.ImageView; 进口fr.smardine.matroussedemaquillage.Main; 公共类MainTest扩展ActivityInstrumentationTestCase2<主> { 私人主营mActivity; 私人ImageView的btRemplir; 私人ImageView的btPerime; 私人ImageView的btNotes; 公共MainTest(){ 超(fr.smardine.matroussedemaquillage fr.smardine.matroussedemaquillage.Main.class); } @覆盖 保护无效设置()抛出异常{ super.setUp(); } @覆盖 保护无效tearDown的()抛出异常{ super.tearDown(); } 公共无效的test1(){ 的assertEquals(1,1); } }
正如你可以看到我的测试都没有这么复杂,即使我消灭用户数据当我启动我的模拟器,有相同的消息,如果我执行两个测试。 哦,顺便说一句,在Android 2.1系统上运行的模拟器,这是我的AndroidManifest.xml文件:
< XML版本=1.0编码=UTF-8&GT?; <舱单的xmlns:机器人=http://schemas.android/apk/res/android 包=fr.smardine.matroussedemaquillage.test 安卓版code =1 机器人:VERSIONNAME =1.0> <使用-SDK安卓的minSdkVersion =7安卓targetSdkVersion =7/> <仪器仪表 机器人:名称=android.test.InstrumentationTestRunner 机器人:targetPackage =fr.smardine.matroussedemaquillage/> <应用 机器人:图标=@可绘制/ ic_launcher 机器人:标签=@字符串/ APP_NAME> <使用库机器人:名称=android.test.runner/> < /用途> < /舱单>
编辑: 我的日志猫:
I / ActivityManager(64):启动PROC fr.smardine.matroussedemaquillage的增值应用fr.smardine.matroussedemaquillage:PID = 510 UID = 10029导报= {3003,1015} D / DDM堆(510):GOT功能列表请求D / dalvikvm(510):GC释放5427对象/ 420224字节90毫秒 D / dalvikvm(510):GC释放6498的对象/在79ms 506616字节 D / dalvikvm(510):GC释放7048对象/在90毫秒567464字节 D / dalvikvm(510):GC释放8628的对象/在73ms 503840字节 我/的System.out(510):无法打开test.properties I / AndroidRuntime(510):AndroidRuntime onExit调用exit(-1) - D /合子(30):过程510退出干净(255) I / ActivityManager(64):过程fr.smardine.matroussedemaquillage(PID 510)已经死亡。 W / ActivityManager(64):的应用程序fr.smardine.matroussedemaquillage运行仪器ComponentInfo崩溃{fr.smardine.matroussedemaquillage.test / android.test.Instrumentatio nTestRunner} D / ActivityManager(64):卸载过程fr.smardine.matroussedemaquillage D / AndroidRuntime(504):关闭虚拟机 D / dalvikvm(504):DestroyJavaVM等非守护线程退出 D / dalvikvm(504):DestroyJavaVM关闭VM下来 D / dalvikvm(504):HeapWorker螺纹关停 D / dalvikvm(504):HeapWorker线程已关闭 D / JDWP(504):JDWP关闭网... D / JDWP(504):GOT唤醒信号,救助的选择了 I / dalvikvm(504):调试器分离;对象注册了1项 D / dalvikvm(504):虚拟机清理 D / dalvikvm(504):为0x0 LinearAlloc使用643668的5242880(12%) I / dalvikvm(504):JNI:(来自??? ???)AttachCurrentThread E / AndroidRuntime(504):错误:线程附加失败解决方案
我曾经得到这个错误,当我使用System.exit(0),在我的测试活动的onFinish象下面这样:
@覆盖 公共无效结束(){ super.finish(); System.exit(0); }
因此,检查您的主要活动的onFinish方法。
I've got an issue with testing my android application. I have 2 testCase class, if I execute them separately, there is no problem, the tests run until the end. But if I do "right-click" on my test project and choose "Run as Android Junit Test" I've got a message
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.'see bellow for my two testClasses:
the first test class
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); } }and the second:
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); } }As you can see my test are not so complicated, even if i "wipe user data" when I launch my emulator, there is the same message if I execute the two tests. Oh, by the way, the emulator run under android 2.1 and this is my AndroidManifest.xml file:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="schemas.android/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: my log cat:
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'解决方案
I used to get this error when I used System.exit(0) on my test Activity's onFinish like below:
@Override public void finish() { super.finish(); System.exit(0); }So check your Main activity's onFinish method.
更多推荐
测试运行失败:仪器仪表运行失败,原因是“过程坠毁。”测试多个机器人活动时,
发布评论