android 测试在 jenkins 中失败
android tests fail in jenkins
我在 Jenkins 上设置了一个 CI-server,它将自动构建 Android-app。当我跳过测试时,一切正常。
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。我不知道这是否是个问题。
根据您的说法,我假设您正在使用类似于 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(或类似的)并修复它,使其看起来像我上面的那样。签入所有内容,然后再次尝试构建。
这是解决方案:
在依赖项标签之间的 app/build.gradle 中添加 testCompile 'org.apache.maven:maven-ant-tasks:2.1.3'
。
我在 Jenkins 上设置了一个 CI-server,它将自动构建 Android-app。当我跳过测试时,一切正常。
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。我不知道这是否是个问题。
根据您的说法,我假设您正在使用类似于 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(或类似的)并修复它,使其看起来像我上面的那样。签入所有内容,然后再次尝试构建。
这是解决方案:
在依赖项标签之间的 app/build.gradle 中添加 testCompile 'org.apache.maven:maven-ant-tasks:2.1.3'
。