2010-08-17 69 views
5

根据this SDK guide,可以通过创建标准应用程序项目,引用库项目,然后对应用程序进行单元测试进行测试来实现库项目的单元测试。自包含的测试库项目找不到库类

但是,我这样做,并启动测试应用程序时,我得到的消息

No tests found with test runner 'JUnit 3'.

我使用Eclipse和Android ADT插件,所有的最新版本。

注:项目编译得很好。测试项目也安装到模拟器上。但在控制台中,我可以看到它寻找<library>.apk,这当然不存在,因为我将它作为库编译到测试项目中。

任何人都得到这个工作?如果是这样,这里的诡计是什么?

更新:发现并解决了实际上包含测试类(!)的问题后,测试运行器现在可以找到所有测试。 ,所有的测试失败,但下列情况除外:

java.lang.NoClassDefFoundError: <nameOfClassInLibraryProject>

nameOfClassInLibraryProject在库项目中定义的类。这些类应该被编译到测试项目中,事实上,一切都编译得很好。但是当运行测试项目时,运行时似乎没有找到库类。

回答

5

经过太多的摆弄和浪费时间在Eclipse中,我设法让Android库项目工作。

按照Working with Library Projects文章:

Instead, you must compile the library indirectly, by referencing the library from a dependent application's build path, then building that application.

的问题是,我理解这意味着库项目应该被添加到项目选项卡中Java构建路径。这样做会使测试项目编译,因为编译器显然可以使用库代码。但由于该库本身并未编译为.jar或.apk,因此库类不会部署到设备中。

的解决方案是库项目添加到项目,而在来源选项卡上,使用链接源...按钮添加库/ src文件夹。是的,它是库文件夹,而不是库项目根目录,必须链接到测试项目中。

+1

我有同样的问题(NoClassDefFoundError),虽然没有自包含的测试lib项目,但在引用android库项目的应用程序项目的测试项目。你的解决方案工作得很好,非常感谢你解决这个问题。 – jpo 2011-06-29 10:40:46

+1

感谢您的支持。只有当我从我的项目属性中删除项目引用并将库添加为库项目时,它才起作用。 – 2013-05-06 21:27:25

+1

它更容易在您的项目属性中添加库,在Android部分中作为库添加,如下所示:http:// stackoverflow。com/questions/8248196/how-to-add-a-library-project-to-a-android-project – theV0ID 2014-02-02 14:31:17