Android测试项目找不到应用程序类
我有一个Android应用程序,我正试图在Eclipse中使用JUnit进行测试。我创建了一个Android测试项目并添加了一些测试,但是当我尝试在我的设备上运行测试时,每个测试都会失败,并且在我尝试测试的类上出现java.lang.NoClassDefFoundError 我发现了一些类似的问题,但与我的问题完全不同。最接近的一个是,但是这个用户正在使用Maven,并使用它找到了一个解决方法。我没有使用Maven 以下是LogCat的一些输出:Android测试项目找不到应用程序类,android,eclipse,junit,Android,Eclipse,Junit,我有一个Android应用程序,我正试图在Eclipse中使用JUnit进行测试。我创建了一个Android测试项目并添加了一些测试,但是当我尝试在我的设备上运行测试时,每个测试都会失败,并且在我尝试测试的类上出现java.lang.NoClassDefFoundError 我发现了一些类似的问题,但与我的问题完全不同。最接近的一个是,但是这个用户正在使用Maven,并使用它找到了一个解决方法。我没有使用Maven 以下是LogCat的一些输出: 03-26 13:36:05.281: I/Te
03-26 13:36:05.281: I/TestRunner(8380): started: testValueOf(com.evertz.android.vlpro.unit.SeverityTest)
03-26 13:36:05.281: I/TestRunner(8380): failed: testValueOf(com.evertz.android.vlpro.unit.SeverityTest)
03-26 13:36:05.281: I/TestRunner(8380): ----- begin exception -----
03-26 13:36:05.281: I/TestRunner(8380): java.lang.NoClassDefFoundError: com.evertz.android.vlpro.Severity
03-26 13:36:05.281: I/TestRunner(8380): at com.evertz.android.vlpro.unit.SeverityTest.testValueOf(SeverityTest.java:19)
03-26 13:36:05.281: I/TestRunner(8380): at java.lang.reflect.Method.invokeNative(Native Method)
03-26 13:36:05.281: I/TestRunner(8380): at java.lang.reflect.Method.invoke(Method.java:511)
03-26 13:36:05.281: I/TestRunner(8380): at junit.framework.TestCase.runTest(TestCase.java:168)
03-26 13:36:05.281: I/TestRunner(8380): at junit.framework.TestCase.runBare(TestCase.java:134)
03-26 13:36:05.281: I/TestRunner(8380): at junit.framework.TestResult$1.protect(TestResult.java:115)
03-26 13:36:05.281: I/TestRunner(8380): at junit.framework.TestResult.runProtected(TestResult.java:133)
03-26 13:36:05.281: I/TestRunner(8380): at junit.framework.TestResult.run(TestResult.java:118)
03-26 13:36:05.281: I/TestRunner(8380): at junit.framework.TestCase.run(TestCase.java:124)
03-26 13:36:05.281: I/TestRunner(8380): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
03-26 13:36:05.281: I/TestRunner(8380): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
03-26 13:36:05.281: I/TestRunner(8380): at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
03-26 13:36:05.281: I/TestRunner(8380): at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661)
03-26 13:36:05.281: I/TestRunner(8380): ----- end exception -----
03-26 13:36:05.281: I/TestRunner(8380): finished: testValueOf(com.evertz.android.vlpro.unit.SeverityTest)
我还有其他Android项目,使用JUnit测试,效果很好。以下是一个简短的总结:
- Utils:一个Android库项目,其中包含几个从我现有的Java代码库和Android库复制的实用程序类
- UtilsTest:Utils项目中类的相应单元测试。具有对easymock.jar的引用。这些测试在设备上运行得非常好
- AppOne:一款简单的Android应用程序,不依赖于Utils、EasyMock或其他任何东西
- AppOneTest:AppOne类的单元测试。这些测试运行正常
- AppTwo:一个依赖于Utils库项目的Android应用程序李>
- AppTwoTest:AppTwo类的单元测试。依赖于UTIL和EasyMock。如上所述,所有这些测试都失败(找不到测试中的类)
我尝试了清理构建、重新启动Eclipse、删除并重新创建AppTwoTest项目,但似乎没有任何效果。有没有关于导致此问题的原因的想法?检查测试应用程序的清单,它应该包含以下内容:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test" <!-- package of the test code -->
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.example.app" /> <!-- package of the app code -->
<application android:allowBackup="false">
<!-- linkage for the test runner -->
<uses-library android:name="android.test.runner" />
</application>
这把它修好了。我使用了错误的仪器目标包(使用的是测试项目包而不是应用程序)。我想我查过了,但我想我错过了。非常感谢。这是新Gradle构建系统的推荐方法吗?