安卓的JUnit测试ClassNotFoundException的 [英] Android JUnit testing ClassNotFoundException

查看:225
本文介绍了安卓的JUnit测试ClassNotFoundException的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图安装的JUnit测试我的活动,为的Andr​​oid项目。

I'm trying to setup JUnit to test my activities for an android project.

在Android项目(还剩下还有一些错误,这就是为什么我要添加一些单元测试)运行OK双方的AVD和设备

The Android Project runs ok on both an AVD and a device (there are still a few bugs left, which is why I want to add a few unit tests)

我跟着从这些网站中的步骤(他们都或多或少相同的,但我还是检查所有的人都只是为了确保我正确地做了一切)
<一href="http://mobile.tutsplus.com/tutorials/android/android-sdk-junit-testing/">http://mobile.tutsplus.com/tutorials/android/android-sdk-junit-testing/
<一href="http://developer.android.com/tools/testing/testing_eclipse.html">http://developer.android.com/tools/testing/testing_eclipse.html

I followed the steps from these websites (they are more or less the same, but I still checked all of them just to make sure I did everything correctly)
http://mobile.tutsplus.com/tutorials/android/android-sdk-junit-testing/
http://developer.android.com/tools/testing/testing_eclipse.html

我创建使用相同的工作空间作为我的项目的测试项目,并建立了我的第一个测试用例。当我试图运行测试,我得到了以下内容:

I created a test project using the same workspace as my project, and created my first test case. When I tried to run the test, I got the following:

[2012年12月9日19时42分56秒 - AssassinTest]!Android的推出
  [2012年12月9日19时42分56秒 - AssassinTest]亚洲开发银行正常运行
。   [2012年12月9日19时42分56秒 - AssassinTest]执行android.test.InstrumentationTestRunner JUnit启动
  [2012年12月9日19时42分56秒 - AssassinTest]自动目标模式:preferred AVDGoogle_Level10可在模拟器模拟器-5554
  [2012年12月9日19时42分56秒 - AssassinTest]上传AssassinTest.apk到器件的模拟器,5554'
  [2012年12月9日19时42分57秒 - AssassinTest]安装AssassinTest.apk ...
  [2012年12月9日19点42分59秒 - AssassinTest]!成功
  [2012年12月9日19点42分59秒 - AssassinTest]项目依赖发现,安装:刺客
  [2012年12月9日19点43分01秒 - 刺客]应用已经部署。无需重新安装。
  [2012年12月9日19点43分01秒 - AssassinTest]启动仪器android.test.InstrumentationTestRunner的设备模拟器,5554
  [2012年12月9日19点43分01秒 - AssassinTest]收集考试信息
  [2012年12月9日19时43分04秒 - AssassinTest]试运行失败:仪器仪表运行失败,原因是抛出java.lang.ClassNotFoundException

[2012-12-09 19:42:56 - AssassinTest] Android Launch!
[2012-12-09 19:42:56 - AssassinTest] adb is running normally.
[2012-12-09 19:42:56 - AssassinTest] Performing android.test.InstrumentationTestRunner JUnit launch
[2012-12-09 19:42:56 - AssassinTest] Automatic Target Mode: Preferred AVD 'Google_Level10' is available on emulator 'emulator-5554'
[2012-12-09 19:42:56 - AssassinTest] Uploading AssassinTest.apk onto device 'emulator-5554'
[2012-12-09 19:42:57 - AssassinTest] Installing AssassinTest.apk...
[2012-12-09 19:42:59 - AssassinTest] Success!
[2012-12-09 19:42:59 - AssassinTest] Project dependency found, installing: Assassin
[2012-12-09 19:43:01 - Assassin] Application already deployed. No need to reinstall.
[2012-12-09 19:43:01 - AssassinTest] Launching instrumentation android.test.InstrumentationTestRunner on device emulator-5554
[2012-12-09 19:43:01 - AssassinTest] Collecting test information
[2012-12-09 19:43:04 - AssassinTest] Test run failed: Instrumentation run failed due to 'java.lang.ClassNotFoundException'

这里是我从LogCat中获得:

And here is what I get from LogCat:

12-09 19:43:02.929: E/dalvikvm(1255): Unable to resolve Ludes/assassi/test/InGameActivityTest; annotation class 19
12-09 19:43:02.929: D/AndroidRuntime(1255): Shutting down VM
12-09 19:43:02.929: W/dalvikvm(1255): threadid=1: thread exiting with uncaught exception (group=0x40015560)
12-09 19:43:02.961: E/AndroidRuntime(1255): FATAL EXCEPTION: main
12-09 19:43:02.961: E/AndroidRuntime(1255): java.lang.NoClassDefFoundError: org.junit.Test
12-09 19:43:02.961: E/AndroidRuntime(1255):     at java.lang.reflect.Method.getDeclaredAnnotations(Native Method)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at java.lang.reflect.Method.getDeclaredAnnotations(Method.java:262)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at java.lang.reflect.AccessibleObject.getAnnotations(AccessibleObject.java:188)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at java.lang.reflect.AccessibleObject.getAnnotation(AccessibleObject.java:196)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.test.suitebuilder.TestMethod.getAnnotation(TestMethod.java:60)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.test.suitebuilder.annotation.HasMethodAnnotation.apply(HasMethodAnnotation.java:39)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.test.suitebuilder.annotation.HasMethodAnnotation.apply(HasMethodAnnotation.java:30)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at com.android.internal.util.Predicates$OrPredicate.apply(Predicates.java:106)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.test.suitebuilder.annotation.HasAnnotation.apply(HasAnnotation.java:42)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.test.suitebuilder.annotation.HasAnnotation.apply(HasAnnotation.java:31)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at com.android.internal.util.Predicates$NotPredicate.apply(Predicates.java:122)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.test.suitebuilder.TestSuiteBuilder.satisfiesAllPredicates(TestSuiteBuilder.java:254)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.test.suitebuilder.TestSuiteBuilder.build(TestSuiteBuilder.java:184)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:373)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3246)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.app.ActivityThread.access$2200(ActivityThread.java:117)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:969)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.os.Looper.loop(Looper.java:130)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.app.ActivityThread.main(ActivityThread.java:3683)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at java.lang.reflect.Method.invokeNative(Native Method)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at java.lang.reflect.Method.invoke(Method.java:507)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at dalvik.system.NativeStart.main(Native Method)
12-09 19:43:02.961: E/AndroidRuntime(1255): Caused by: java.lang.ClassNotFoundException: org.junit.Test in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/system/framework/android.test.runner.jar:/data/app/udes.assassin.test-1.apk:/data/app/udes.assassin-2.apk]
12-09 19:43:02.961: E/AndroidRuntime(1255):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
12-09 19:43:02.961: E/AndroidRuntime(1255):     ... 25 more

在搜索上的几个论坛,我读了这可能是由坏的清单文件造成的,但我看不出有什么不对我的

While searching on a few forums, I read that this might be caused by a bad manifest file, but I don't see what is wrong with mine

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

<uses-sdk android:minSdkVersion="10" />

<instrumentation
    android:name="android.test.InstrumentationTestRunner"
    android:targetPackage="udes.assassin" />

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

最后,这是code。在我唯一的JUnit类(到目前为止)

And finally, this is the code in my only JUnit class (so far)

package udes.assassin.test;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import udes.assassin.InGameActivity;
import android.test.ActivityInstrumentationTestCase2;

public class InGameActivityTest 
        extends ActivityInstrumentationTestCase2<InGameActivity> {

    public InGameActivityTest() {
        super("udes.assassin", InGameActivity.class);
    }

    public InGameActivityTest(Class<InGameActivity> activityClass) {
        super(activityClass);
    }

    @Before
    protected void setUp() throws Exception {
        super.setUp();
    }

    @Test
    public void testSetItemPosition() {
        fail("Not yet implemented");
    }
}

感谢您

推荐答案

这可能是因为JUnit是不是在你的类路径中。转到项目 - &GT;属性 - &GT; Java构建路径 - &GT;订单和出口,并检查了JUnit选中该复选框。

It is probably because JUnit is not in your classpath. Go to Project -> Properties -> Java Build Path -> Order and Export and check if the JUnit box is unchecked.

这篇关于安卓的JUnit测试ClassNotFoundException的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆