android测试项目没有找到特定于android的类

时间:2014-01-06 17:09:19

标签: java android eclipse unit-testing junit

简而言之:我有一个android项目(在Eclipse中)和一个测试项目。当我想使用JUnit执行测试方法(使用android.location.Location)时,我得到了android.location.Location的classNotFoundException。

更多细节:我有两个Eclipse项目

  • 对myApp
  • myAppTest

第二个是使用Eclipse向导为Android测试项目创建的,并且有一个清单文件

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

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

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

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

</manifest>

我在项目myApp中有一个类com.myApp.SomeClass,我想测试它的方法someMethod(Location location)。因此,我将com.myApp.test.SomeClassTest类添加到myAppTest项目中,该项目如下所示:

public class SomeClassTest {
    @Test
    public void testSomeMethod() {
        Location location = new Location("A");
        int result com.myApp.SomeClass.someMethod(location);
        //assert result here
    }
}

当我使用Android JUnit Test Launcher执行testSomeMethod作为JUnit测试时,我得到了异常: java.lang.NoClassDefFoundError:android / location / Location 在com.myApp.test.SomeClassTest.testSomeMethod

我在创建测试项目时选择了Android 4.2.2作为构建目标(即包含了Android 4.2.2库)。 (另外,我已经包含了JUnit 4库。)

如何避免异常?我不想启动任何Android模拟器,我只想执行一个简单的JUnit测试,测试包含Android SDK类的方法(但不包括任何GUI类)。

非常感谢您提前获得任何帮助!

1 个答案:

答案 0 :(得分:0)

似乎正在尝试(测试使用Android API而不启动模拟器的类)是不可能的。相反,我更改了SomeClassTest以扩展AndroidTestCase,我选择“运行Android JUnit测试”来调出模拟器。然后,一切正常。