我使用Maven和Android- release prototype创建了一个漂亮的Android项目。现在我有一个简单的问题:我的集成测试没有使用被测库的最新版本。
当运行Eclipse时,Maven和M2E似乎都使用过时的版本(至少在我的设备上打开的应用程序有一瞬间看起来是这样的)。我最初认为这可能是Eclipse愚蠢的缓存,但随后Maven应该能够使用正确的版本。我删除了bin和目标文件夹,甚至Maven存储库中的条目,但构建总是会凭空提取旧版本。
刚才我发现,不仅被测试的库过时了,而且有一个通过Maven和M2E执行的测试在一段时间前被删除了。
我知道这个问题很模糊,但我不确定从哪里寻找问题的根源。谁能告诉我发生了什么事?显然这至少是两个独立的问题。我通过将库作为依赖项添加到项目的Android属性中来修复Eclipse部分。由于这是android-maven-plugin现在的问题,我将发布集成测试项目的pom.xml的相关部分,希望有人从相同的原型开始有相同的问题,并知道如何修复它:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>org.acme.project.android.it</artifactId>
<packaging>apk</packaging>
<dependencies>
<dependency>
<groupId>org.acme.project</groupId>
<artifactId>org.acme.project.android</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android-test</artifactId>
<version>4.1.1.4</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<configuration>
<sdk>
<platform>16</platform>
</sdk>
</configuration>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>
您必须确保要测试的应用程序的版本是正确的。在你的情况下,你正在使用1.0.0版本…而实际上,正在开发的最新版本可能是1.1.0-SNAPSHOT之类的东西。
而且你上面写的肯定是无效的。看看我们作为Android Maven Plugin项目的一部分提供的样例项目。
正确的答案是:我想做的(集成测试Android库)是不可能的。我现在测试应用程序,它可以工作。