我有我的android应用程序集成测试。当我尝试从maven运行它们时,我得到下面的错误。我在这里读到我应该使用<scope>provieded</scope>
,但随后我得到编译错误,如"package not found"…
附加集成测试。
[INFO] --- android-maven-plugin:3.5.3:internal-integration-test (default-internal-integration-test) @ md-lt-tests ---
[INFO] Found 1 devices connected with the Android Debug Bridge
[INFO] android.device parameter not set, using all attached devices
[INFO] Emulator emulator-5554_Test_unknown_sdk found.
[INFO] emulator-5554_Test_unknown_sdk : Running instrumentation tests in lt.ito.md.tests
[INFO] emulator-5554_Test_unknown_sdk : Run started: lt.md.md.tests, 0 tests:
[INFO] emulator-5554_Test_unknown_sdk : Run failed: Instrumentation run failed due to 'java.lang.IllegalAccessError'
[INFO] emulator-5554_Test_unknown_sdk : Run ended: 0 ms
[INFO] Tests run: 0, Failures: 0, Errors: 0
[INFO] emulator-5554_Test_unknown_sdk : Report file written to /home/martynas/work/md-android/md/lt/lt-tests/target/surefire-reports/TEST-emulator-5554_Test_unknown_sdk.xml
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:20.297s
[INFO] Finished at: Sun Apr 21 18:31:30 EEST 2013
[INFO] Final Memory: 22M/307M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.5.3:internal-integration-test (default-internal-integration-test) on project md-lt-tests: emulator-5554_Test_unknown_sdk : Test run failed to complete: Instrumentation run failed due to 'java.lang.IllegalAccessError'
集成测试项目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>
<parent>
<groupId>company</groupId>
<artifactId>md-lt</artifactId>
<version>1.5.4</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>md-lt-tests</artifactId>
<packaging>apk</packaging>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>md-lt-app</artifactId>
<version>${project.version}</version>
<type>apk</type>
</dependency>
<dependency>
<groupId>com.jayway.android.robotium</groupId>
<artifactId>robotium-solo</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>android</groupId>
<artifactId>android</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.5.3</version>
<extensions>true</extensions>
<configuration>
<sdk>
<platform>${android.platform.version}</platform>
</sdk>
</configuration>
</plugin>
</plugins>
</build>
</project>
找到解决方案
测试项目应该同时具有apk
和jar
依赖关系,并且都应该具有<scope>provided</scope>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>md-lt-app</artifactId>
<version>${project.version}</version>
<scope>provied</scope>
<type>apk</type>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>md-lt-app</artifactId>
<version>${project.version}</version>
<scope>provied</scope>
<type>jar</type>
</dependency>