使用 Robotium 的 Android Maven 仪器测试返回 IllegalAccessError

标签 android maven robotium android-testing

我有我的 android 应用程序集成测试。 当我尝试从 Maven 运行它们时,出现以下错误。我读了here我应该使用<scope>provieded</scope> ,但随后出现编译错误,如“找不到包”...

附加集成测试 pom.xml。

[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>

最佳答案

找到解决方案 here

测试项目应该同时具有 apkjar依赖项,两者都应该有 <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>

关于使用 Robotium 的 Android Maven 仪器测试返回 IllegalAccessError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16132941/

相关文章:

java - java (Robotium) 中的隐藏方法和类

java - Robotium - 等待 Activity 的任务完成

java - Robotium:有没有办法列出屏幕/Activity 上所有元素的标签/ID?

android - KtLint 任务 ':app:ktlintAndroidTestDebugSourceSetCheck' 执行失败

android - 如何在 Android 中发送带有 Intent 的自定义数据对象?

maven - 父pom的版本RELEASE或LATEST

python - 有关管理大型、多方面的企业 Python 代码库的信息?

android - 当我的应用程序在野外崩溃时,如何提高调试数据的质量?

android - 通知在 API 17 下可见,但在 API 13 下不可见

java - 带有外部 jar 的 Maven 程序集