2015-04-28 1 views
0

Я установил CI-сервер на Jenkins, который будет автоматизировать сборку Android-приложения. Когда я пропускаю тесты, все работает нормально.Андроид не работает в jenkins

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 2.2.1, в то время как я использую gradle 2.3 на сервере. Я не знаю, если это проблема.

+1

Сначала выясните, работает ли на локальной машине все, когда вы делаете полную очистку + перестраиваете. Похоже, что локальный хранит некоторые файлы из предыдущей сборки, которые делают тесты выполняемыми правильно, в то время как этих файлов нет на вашей машине jenkins – Aster

+0

Спасибо, хороший комментарий, я расскажу об этом разработчикам. – lvthillo

+0

Они очистили его, и их сборка отлично работала – lvthillo

ответ

0

Это решение: Добавить testCompile 'org.apache.maven:maven-ant-tasks:2.1.3' в ваше приложение/build.gradle между зависимостями - тегами.

+0

Вы должны иметь возможность правильно пометить свой собственный ответ, если да, пожалуйста, сделайте это, чтобы другие знали, что было правильным ответом при чтении этой страницы. Рад, что вы его отсортировали :) – apmartin1991

+0

Спасибо, я сделаю это tommorow, пока нельзя сделать :) – lvthillo

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 файлы не включены в проверку в, таким образом, когда Дженкинс попытался построить свой. apk он не может найти файлы .jar, а затем сбой. У ваших разработчиков есть .jar-файлы, поэтому они могут скомпилировать программу. Вы должны попросить своих разработчиков проверить git.ignore (или подобное) и исправить его так, чтобы он выглядел как мой. Проверьте все, а затем попытайтесь построить еще раз.

+0

Мы действительно на самом деле, я спрошу их, спасибо. – lvthillo

+0

Это выглядит так же, за исключением того, что они имеют это в начале: '.gradle /local.properties /.idea/workspace.xml /.idea/libraries .DS_Store /построить файлы приложений #built * .apk * .ap_' Возможно, это проблема? – lvthillo