我有一个模块,可以构建一个名为MyApp的应用程序.我有另一个为该应用程序构建一些测试用例,称为MyAppTests.他们都建立自己的APK,他们都在我的IDE中工作正常.我想用ant构建它们,以便我可以利用持续集成.
构建应用程序模块工作正常.我很难让Test模块进行编译和运行.
使用上一个问题中的 Christopher的提示,我曾经android create test-project -p MyAppTests -m ../MyApp -n MyAppTests创建了必要的构建文件来构建和运行我的测试项目.这似乎工作得很好(一旦我删除了为我构造的不必要的测试用例并将我的AndroidManifest.xml恢复到我用它之前使用的那个android create),但我有两个问题.
第一个问题:项目没有编译,因为它缺少库.
$ ant run-tests
Buildfile: build.xml
[setup] Project Target: Google APIs
[setup] Vendor: Google Inc.
[setup] Platform Version: 1.6
[setup] API level: 4
[setup] WARNING: No minSdkVersion value set. Application will install on all Android versions.
-install-tested-project:
[setup] Project Target: Google APIs
[setup] Vendor: Google Inc.
[setup] Platform Version: 1.6
[setup] API level: 4
[setup] WARNING: No minSdkVersion value set. Application will …Run Code Online (Sandbox Code Playgroud) 我遇到了与此问题相同的问题:使用ant与库项目进行Android单元测试
我尝试了问题中提出的两种方法,但是在Android工具的r18版本中,我得到了:
NTServicesTest/build.xml:110: Reference jar.libs.ref not found.
Run Code Online (Sandbox Code Playgroud)
我不确定是不是我没有按照原始问题的答案的解决方法的配方,或者如果在Android工具的r18中的某些内容发生了变化.
我的文件夹设置在包含..的proj文件夹中:
NTServices,NTServicesTest,NTServicesTestApp
对于@Snicolas的解决方法,我修改了我的NTServicesTest/project.properties,如下所示:
# Project target.
target=android-15
tested.android.library.reference.1=../NTServices
Run Code Online (Sandbox Code Playgroud)
我的NTServicesTest/build.xml看起来像这样:(从版本标签的右下方)
<import file="${sdk.dir}/tools/ant/build.xml" />
<!-- override "compile" target in platform android_rules.xml to include tested app's external libraries -->
<!-- Compiles this project's .java files into .class files. -->
<target name="-compile" depends="-build-setup, -pre-build, -code-gen, -pre-compile">
<do-only-if-manifest-hasCode elseText="hasCode = false. Skipping...">
<!-- If android rules are used for a test project, its classpath should include
tested project's location -->
<condition property="extensible.classpath"
value="${tested.project.absolute.dir}/bin/classes"
else=".">
<isset property="tested.project.absolute.dir" …Run Code Online (Sandbox Code Playgroud)