我正在尝试使用Maven和Robolectric对我的Android应用进行自动化测试。我遇到的问题是,我不会在本地计算机上运行测试,而Android SDK也不会安装在运行测试的计算机上。我已经使用了maven-dependency-plugin从我们的存储库中获取sdk,并在流程资源阶段将其解压缩,问题是这种情况发生在需要访问文件之后。当我尝试使用apk打包程序时,由于找不到SDK,因此永远无法下载到SDK。所以我的问题是:是否可以在构建中发生任何其他事情之前触发此下载?如果有人对如何在构建时正确安装sdk有所了解,将不胜感激。让我知道是否可以添加任何其他信息。

最佳答案

Robolectric和maven-android-plugin都需要SDK。 Android插件需要构建工具/ adb,而Robolectric需要相应的android.jar。

因此,您必须为以下目的创建Maven任务/目标:


从某些网址下载SDK zip。
在测试计算机上的目录中解压缩zip。
更新POM的android.sdk.path属性,以指向sdk目录。


我发现的一些摘要可能会有所帮助:

下载:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>wagon-maven-plugin</artifactId>
    <version>1.0-beta-3</version>
    <executions>
        <execution>
            <id>download-android-sdk</id>
            <phase>pre-integration-test</phase>
            <goals>
                <goal>download-single</goal>
            </goals>
            <configuration>
                <url>http://dowloadsite.com/<url>
                <fromFile>/downloads/sdk.zip</fromFile>
                <toDir>${project.build.directory}/sdk</toDir>
            </configuration>
        </execution>
    </executions>
</plugin>


打开包装:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
        <execution>
            <id>unpack-sdk</id>
            <phase>pre-integration-test</phase>
            <configuration>
                <tasks>
                    <unzip src="${project.build.directory}/sdk/sdk.zip" dest="${project.build.directory}/sdk/" />
                </tasks>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

10-07 19:11
查看更多