如何使用ant构建一个依赖于另一个应用程序的Android测试应用程序?

时间:2010-03-17 22:44:15

标签: android unit-testing ant

我有一个名为MyApp的模块,另一个名为MyAppTests的模块依赖于MyApp。两个模块都生成APK,一个名为MyApp.apk,另一个名为MyAppTests.apk。

我通常在IntelliJ或Eclipse中构建它们,但我想为它们创建一个ant构建文件,以便持续集成。

我使用“android update”为MyApp创建构建文件,感谢commonsware's answer我之前的问题,我已经能够使用ant成功构建它。

我现在想用ant构建MyAppTests.apk。我像以前一样使用“android update”构建了构建文件,但是当我运行它时,我得到一个错误,表明它没有在MyApp中找到任何类。

从我之前的问题中得到一个问题,我尝试将MyApp.apk放入MyAppTests / libs,但不幸的是,这并没有奇迹般地解决问题。

使用ant构建测试应用APK的最佳方法是什么?它取决于另一个APK中的类?

$ ant debug
Buildfile: build.xml
    [setup] Project Target: Google APIs
    [setup] Vendor: Google Inc.
    [setup] Platform Version: 1.5
    [setup] API level: 3
    [setup] WARNING: No minSdkVersion value set. Application will install on all Android versions.

dirs:
     [echo] Creating output directories if needed...

resource-src:
     [echo] Generating R.java / Manifest.java from the resources...

aidl:
     [echo] Compiling aidl files into Java classes...

compile:
    [javac] Compiling 5 source files to /Users/mike/Projects/myapp/android/MyAppTests/bin/classes
    [javac] /Users/mike/Projects/myapp/android/MyAppTests/src/com/myapp/test/GsonTest.java:3: cannot find symbol
    [javac] symbol  : class MyApplication
    [javac] location: package com.myapp
    [javac] import com.myapp.MyApplication;
    [javac]                ^

2 个答案:

答案 0 :(得分:4)

/Users/mike/Projects/myapp/android/中,假设主应用源位于名为MyApp的子目录中,请运行:
android create test-project -p MyAppTests -m ../MyApp -n MyAppTests

这将生成测试文件夹结构和相应的Ant构建文件,因此您可以执行以下操作:
cd MyAppTests
ant run-tests

答案 1 :(得分:1)

我遇到了这个问题。

对我来说,解决方案是将以下内容添加到我的ant.properties中。

tested.project.dir=../MyApp

Christopher的回答也将为您生成一个ant.properties文件。如果你在Eclipse中还没有一个功能齐全的项目,他的解决方案会更好。

对我来说,我的项目已经在Eclipse中构建和工作,但不会构建为ant。为了实现这一点,我只需要在我的ant.properties中使用上述内容。 Eclipse和其他IDE没有为您生成适当的ant.properties,因此Christopher的答案将起作用,因为它生成ant.properties。