我正在Netbeans中构建一个Android hello world应用程序。它正在构建正确,我也可以在模拟器中运行。
但是在创建和运行Junit测试时,我得到java.lang.NoClassDefFoundError
。
如何解决此问题?
答案 0 :(得分:16)
检查测试项目的清单,例如HelloWorldTest/AndroidManifest.xml
。 android:targetPackage
标记的instrumentation
属性应定位到应用程序中的包,例如com.example.helloworld
。 不您的测试项目的测试包(例如com.example.helloworld.test
)。
答案 1 :(得分:3)
主应用程序的AndroidManifest.xml -> manifest -> package
只需与测试应用程序的AndroidManifest.xml -> manifest -> instrumentation -> android:targetPackage
匹配。
答案 2 :(得分:0)
完整错误消息包含类的名称,在类路径上找不到。仔细检查用于运行测试的类路径是否包含所有必需的类和库(您的类文件,junit.jar,特定于android的库)。
答案 3 :(得分:0)
我发现重建通常会找到类(因为它是类路径问题)。 Netbeans似乎积极地编译现有的测试,但主要的源代码(至少来自maven设置)并不总是可用。
我已经开始运行完整版本来尝试解决此问题。可能有一个插件可以解决这个问题,但我还没有找到它。
编辑:This可能有帮助。
答案 4 :(得分:0)
我不知道netbeans的具体细节,但问题可能是相同的。
FragmentActivity can not be tested via ActivityInstrumentationTestCase2
您的测试项目可能使用与主项目不同的Android兼容性库,这会导致这种奇怪的错误。