简而言之:我有一个android项目(在Eclipse中)和一个测试项目。当我想使用JUnit执行测试方法(使用android.location.Location)时,我得到了android.location.Location的classNotFoundException。
更多细节:我有两个Eclipse项目
第二个是使用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类)。
非常感谢您提前获得任何帮助!
答案 0 :(得分:0)
似乎正在尝试(测试使用Android API而不启动模拟器的类)是不可能的。相反,我更改了SomeClassTest以扩展AndroidTestCase,我选择“运行Android JUnit测试”来调出模拟器。然后,一切正常。