自包含的测试库项目找不到库类

时间:2010-08-17 16:29:44

标签: android unit-testing junit

根据this SDK guide,可以通过创建标准应用程序项目,参考Library项目然后检测应用程序进行单元测试来实现对项目库单元测试。

然而,当我这样做并启动测试应用程序时,我收到消息

  

测试跑者'JUnit 3'没有找到测试。

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

注意:项目编译得很好。测试项目也可以很好地安装到模拟器。但是在控制台中我可以看到它查找<library>.apk,当然我不会将其编译为测试项目中的库。

任何人都有这个工作吗?如果是这样,这里的诀窍是什么?

更新:在发现并修复问题(实际上包括测试类(!))之后,测试运行器现在可以找到所有测试。 但是,所有测试都失败,但有以下例外:

  

java.lang.NoClassDefFoundError:&lt; nameOfClassInLibraryProject&gt;

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

1 个答案:

答案 0 :(得分:5)

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

根据Working with Library Projects文章:

  

相反,您必须通过从依赖应用程序的构建路径引用库,然后构建该应用程序来间接编译库。

问题在于我将此解释为表示应将库项目添加到 Java构建路径中的项目选项卡。这样做会使测试项目编译,因为库代码显然可供编译器使用。但由于库本身并未编译为.jar或.apk,因此库类永远不会部署到设备中。

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