我正在尝试对使用 Ant 运行的 Android 应用程序进行 JUnit 测试。在使用 Eclipse 时,这没有问题,所有内容都已编译并且可以毫无问题地运行。
目前,我正在收到org.junit.Test的ClassNotFoundException。
我正在运行以下命令
ant clean debug - success
ant uninstall - success
ant installt - success
ant test - failure
错误日志:
test:
[echo] Running tests ...
[exec] INSTRUMENTATION_RESULT: shortMsg=java.lang.ClassNotFoundException
[exec] INSTRUMENTATION_RESULT: longMsg=java.lang.ClassNotFoundException: org.junit.Test
[exec] INSTRUMENTATION_CODE: 0
我想,它错过了 junit.jar 文件。我将其添加到我的 ANT_HOME/lib 目录中,但它没有任何效果。ant-junit.jar库已经在"ANT_HOME/lib"中,我不需要复制它。
我还尝试将其添加到测试项目的类路径中,并将其标记为要导出。同样在这种情况下,结果保持不变。
我还让 eclipse 生成一个构建.xml并将其与 android 更新项目生成的文件合并。它没有任何区别,我收到同样的错误。
我确信我在这里错过了一些很容易的东西。如果需要进一步的配置详细信息,我很乐意提供它们。我感谢您的帮助。
构建.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project name="FSTest" default="help">
<property file="local.properties" />
<property file="ant.properties" />
<property environment="env" />
<condition property="sdk.dir" value="${env.ANDROID_HOME}">
<isset property="env.ANDROID_HOME" />
</condition>
<loadproperties srcFile="project.properties" />
<fail
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
unless="sdk.dir"
/>
<import file="custom_rules.xml" optional="true" />
<import file="${sdk.dir}/tools/ant/build.xml" />
</project>
蚂蚁属性:
tested.project.dir=../FS
external.libs.dir=libs
项目属性:
target=android-11
问题出在我的构建.xml文件中。我根据这里给出的示例对其进行了修改:http://www.vogella.com/articles/ApacheAnt/article.html,此后它起作用了。
这些台词是造成差异的台词:
<path id="junit.class.path">
<pathelement location="libs/junit.jar" />
<pathelement location="${build.dir}" />
</path>
JUnit 任务页面列出了几种方法,您可以通过这些方法使 JUnit jar 可供 Ant 使用:
http://ant.apache.org/manual/Tasks/junit.html
特别是,备选方案1要求在"ANT_HOME /lib"中同时添加"junit.jar"和"ant-junit.jar"。 不过,那里列出的 5 个选项中的任何一个都应该可以正常工作。