2

有3个项目:

  1. 主要项目
  2. main 引用的一个库项目(ActionBarSherlock)
  3. 一个机器人测试项目。

这三个项目由 Jenkins 签出到工作区中的 3 个文件夹中。

但是,Robotium 测试项目无法引用库项目:

  • 如果只使用标准的“android update test-project”,那么测试项目将不会编译,因为它间接引用了库项目

    [javac] /home/jenkins_test/test/src/com/**********/test/core/**********TestCase.java:15: cannot access                com.actionbarsherlock.app.SherlockFragmentActivity
    [javac] class file for com.actionbarsherlock.app.SherlockFragmentActivity not found
    [javac]             ActivityInstrumentationTestCase2<Home> {
    [javac]                                             ^
    [javac] /home/jenkins_test/test/src/com/**********/test/core/**********TestCase.java:55: cannot find symbol
    [javac] symbol  : constructor Solo(android.app.Instrumentation,com.**********.activity.Home)
    [javac] location: class com.jayway.android.robotium.solo.Solo
    [javac]             solo = new Solo(getInstrumentation(), getActivity());
    [javac]                    ^
    
  • “android update test-project”不支持 --library 标志

  • 如果 android.library.reference.1=../ActionBarSherlock 被添加到测试项目的 project.properties 中,那么测试项目可以编译但在运行时它会抱怨找不到主活动的类 (NoClassDefFoundError)

4

1 回答 1

0

不幸的是,这在 ant 中失败了,但测试可以由 Eclipse 构建和运行。您应该考虑的唯一一件事是在测试项目中检查Java Build Path -> Order and Export中的 robotsium 库

在此处输入图像描述

并检查您的库项目是否未测试项目的属性中引用

在此处输入图像描述

如果您想单独测试库项目,可以按照android: testing library projects中描述的说明进行操作。

我知道这可能不是解决方案,因为您使用的是 Jenkins,但至少它会让您从坚实的基础开始。

于 2012-05-18T05:48:18.857 回答