2016-02-12 3 views
0


Я играю вокруг Дженкинса с 5 дней, но у меня есть проблема. У меня есть код Java, который был модулем с JUnit, и я использую Gradle Build для создания кода. Я преднамеренно попытался пропустить тест из трех тестов, и отчеты о сбоях в градации - неудача! что ожидалось. Тем не менее я нажал мой код на github SampleTestProject, и сборка была запущена на Дженкинсе через минуту (как настроено). Тем не менее, дженкинс отмечает успех сборки, несмотря на то, что тест не удался при построении на локальной машине!

Кодекс, что я буду размещать очень плохо пока это нормально, чтобы иметь практический опыт работы на Дженкинс
Основной класс
Обнаружение сбоев теста на jenkins

package com.bitwise.test; 

    /** 
    * Created by AniruddhaS on 2/11/2016. 
    */ 
    public class Hello { 
     public String sayHello() { 
      return "Hello"; 
     } 

     public int addArgs(int i, int i1) { 
      return (i+i1); 
     } 

     public String sayBye() { 
      return "Bye"; 
     } 

     public int mulArgs(int i, int i1) { 
      return (i*i1); 
     } 
    } 


Тест класс

package com.bitwise.test; 

import junit.framework.Assert; 
import org.junit.Test; 
import org.junit.experimental.theories.suppliers.TestedOn; 

/** 
* Created by AniruddhaS on 2/11/2016. 
*/ 
public class HelloTest { 
    @Test 
    public void itShouldReturnHelloOnCallingHelloMethod(){ 
     //given 
     Hello vector=new Hello(); 
     //when 
     Assert.assertSame("Hello",vector.sayHello()); 
     //then 
    } 
    @Test 
    public void itShouldReturnAValueAfterAdditionOfTheArgumentValues(){ 
     //given 
     Hello adder=new Hello(); 
     //when 
     Assert.assertEquals(3,adder.addArgs(2,1)); 
     //then 
    } 
    @Test 
    public void itShouldPrintByeWhenRelevantFunctionIsCalled(){ 
     //given 
     Hello bye=new Hello(); 
     //when 
     Assert.assertSame("Bye",bye.sayBye()); 
     //then 
    } 
    @Test 
    public void itShouldMultiply(){ 
     //given 
     Hello bye=new Hello(); 
     //when 


     Assert.assertEquals(6,bye.mulArgs(5,3));/*here mulArgs emits 15 but 
            test fails since expected value is 6*/ 
     //then 
    } 
} 


build.gradle

group 'hello' 
version '1.0' 

apply plugin: 'java' 

sourceCompatibility = 1.5 

repositories { 
    mavenCentral() 
} 
task test1<< 
     { 
    println("hello, test running") 
} 

test{ 
    testLogging{ 
     events 'started','passed' 
     events 'started','failed' 
    } 
} 

dependencies { 
    testCompile group: 'junit', name: 'junit', version: '4.11' 
} 


Просьба указать, как решить вышеуказанную проблему!
Заранее спасибо :)

+0

Получает ли вывод сборки, что тест не удается (что Дженкинс не замечает), или является фактической проблемой, которую проходит тест, когда ваша сборка проходит через Дженкинса? – sisyphus

ответ

2

Как вы используете скрипт Gradle?

Если вы используете «Execute оболочки» шаг, чтобы сделать что-то вроде ./gradlew test, или вы используете Gradle plugin, чтобы выполнить вашу задачу test, Дженкинс будет маркировать сборки, как не удалось если сценарий Gradle терпит неудачу , например из-за ошибки утверждения теста.

Но что вы хотите для Jenkins построить быть отмеченными как нестабильным, а не не удалось.

Чтобы сделать это, вам нужно обновить скрипт Gradle не лечить неудачи испытаний, как со смертельным исходом в вашем test блоке build.gradle:

test { 
    ignoreFailures = true 
} 

Затем вы можете запустить скрипт Gradle в Jenkins и пусть это analyse результаты JUnit, которые будут устанавливать статус сборки на успешно или нестабильный, в зависимости от того, проходят ли тесты или не проходят тесты.

Плагин Gradle java записывает результаты тестирования в формате JUnit XML в build/test-results/TEST-HelloTest.xml (в вашем примере).

Чтобы проанализировать результаты, перейдите к «Действия после сборки» в конфигурации задания и добавьте «Опубликовать отчет о результатах теста JUnit» и введите **/TEST-*.xml в поле «Test report XMLs».

3

Ну, я не мог понять ваш код, но вы можете добавить после построения действия в Дженкинс, которые могут повлиять на состояние задания.

например: Text finder plugin: ключевые слова в указанных вами файлах журналов и использовать их для отказа от успешной сборки для отказа.

Log Parser Plugin: показать сводку ошибок и предупреждений

+0

Хорошо Позвольте мне попробовать! –

+0

В тестовом классе кода я сделал ошибку, преднамеренно отмеченную комментарием. Во время выполнения тестов локально, я получаю ошибку утверждения, но дженкинс не делает этого и пропускает тест. –

+0

Действия после сборки помогут вам только отметить тест как сбой, если он обнаружит «Ошибка утверждения» в журнале построения (если вы настроите его на поиск текста «Ошибка утверждения»). Но если вы получаете ошибку локально, а не в работе jenkins, вам нужно найти основную причину проблемы. – SnehalK

Смежные вопросы