Android测试在jenkins失败

时间:2015-04-28 12:14:57

标签: android jenkins gradle noclassdeffounderror

我已经在Jenkins上设置了CI服务器,它将自动化Android应用程序的构建。当我跳过测试时,一切正常。

clean build -x test

我将收到apk以及一个以成功完成的构建。 但是,当我没有跳过测试时,我得到一个错误。我的命令是:

clean build

我将收到以下错误:

    :app:testDebug

    Test > testnamse FAILED
        java.lang.NoClassDefFoundError
            Caused by: java.lang.ClassNotFoundException

   Test > testname FAILED
        java.lang.NoClassDefFoundError

    Test > testname FAILED
        java.lang.NoClassDefFoundError

    ...

    8 tests completed, 8 failed
    :app:testDebug FAILED

    FAILURE: Build failed with an exception.

    * What went wrong:
    Execution failed for task ':app:testDebug'.
    > There were failing tests. See the report at: file:index.html

这个.html显示失败的测试和java.lang.NoClassDefFoundError。但是当开发人员在他当地的机器上执行gradle时,测试成功了。他们使用gradle 2.2.1,而我在服务器上使用gradle 2.3。我不知道这是不是一个问题。

2 个答案:

答案 0 :(得分:1)

根据你的说法判断,我会假设你正在使用某种形式的源代码控制,类似于GitHub。值得检查您的存储库和“.ignore”文件(如果您使用的是GitHub)。

一个好的.ignore文件的例子是这样的:

# Built application files
*.apk
*.ap_

# Files for the Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/

# Gradle files
.gradle/
build/
/*/build/

# Local configuration file (sdk path, etc)
local.properties

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

我觉得您的.jar文件不包含在签入中,因此当Jenkins尝试构建您的.apk时,它无法找到所需的.jar文件,然后失败。您的开发人员拥有.jar文件,这就是他们可以编译程序的原因。你应该让你的开发人员检查git.ignore(或类似的)并修复它,使它看起来像我的上面。检查所有内容,然后尝试再次构建。

答案 1 :(得分:0)

这是解决方案: 在app / build.gradle中的依赖项 - 标记之间添加testCompile 'org.apache.maven:maven-ant-tasks:2.1.3'