отправить электронное письмо от Гудзона, когда unittest не удается - PullRequest
3 голосов
/ 07 октября 2011

Я запускаю юнит-тесты Selenium после сборки Hudson. И хочу использовать его для мониторинга функциональности моих сайтов.

Когда сборка завершается успешно (что должно быть всегда, поскольку она содержит только юнит-тесты), hudson не будет отправлять электронные письма, даже если некоторые тесты не пройдены.

С помощью email-ext я могу отправлять электронные письма, когда они становятся нестабильными, но, поскольку тесты в браузерах несколько нестабильны, я не хочу, чтобы они появлялись при первом сбое, что-то вроде 3 подряд или 80% последнего x- Минуты / пробеги

Лучше всего будет конфигурация, основанная на наборе правил, основанном на имени теста, или что-то определенное в тесте, которое помечает его как релевантное.

Ответы [ 3 ]

1 голос
/ 08 октября 2011

Похоже, вам нужно две работы в Гудзоне. Один для юнит-тестов и один для селена.

Вы хотите, чтобы первая работа по созданию и запуску юнит-тестов и отчет Хадсона о юнит-тестах.

В конфигурации в разделе «Действия после сборки» вы можете добавить «проект для сборки» и указать свою работу по сборке и запуску selenium, а также отчеты по этим результатам.

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

1 голос
/ 17 октября 2011

Как насчет использования сценария для настройки содержимого почты только в случае нестабильных / все еще нестабильных сборок?

Здесь можно добавить некоторые условия для проверки возраста только для необходимых тестовых случаев.

<%  if(build.testResultAction) {
    def rootUrl = hudson.model.Hudson.instance.rootUrl
    def jobName = build.parent.name

    def previousFailedTestCases = new HashSet()
    def currentFailedTestCase = new HashSet()

    if(build.previousBuild?.testResultAction){
        build.previousBuild.testResultAction.failedTests.each {
            previousFailedTestCases << it.simpleName +"." + it.safeName
        }
    }

    testResult.failedTests.each{tr ->
          def packageName = tr.packageName
          def className = tr.simpleName
          def testName = tr.safeName
          def displayName = className+"."+testName

          currentFailedTestCase << displayName
          def url = "$HUDSON_URL/job/$PROJECT_NAME/$BUILD_NUMBER/testReport/$packageName/$className/$testName"
          if(tr.age == 1){
            startedFailing << [displayName:displayName,url:url,age:1]
          } else{
            failing << [displayName:displayName,url:url,age:tr.age]
          }
    }

    startedPassing = previousFailedTestCases - currentFailedTestCase

    startedFailing = startedFailing.sort {it.displayName}
    failing = failing.sort {it.displayName}
    startedPassing = startedPassing.sort()
    } %>

Ссылка на источник: http://techkriti.wordpress.com/2008/08/30/using-groovy-with-hudson-to-send-rich-text-email/

1 голос
/ 07 октября 2011

Когда сборка завершается успешно (что должно быть всегда, поскольку она содержит только юнит-тесты), hudson не будет отправлять электронные письма, даже если некоторые тесты не пройдены.

Я не знаю, хотите ли вы это исправить, но если вы используете аргумент

-Dmaven.test.failure.ignore=false

Тогда Хадсон провалит вашу сборку, если тест не пройден.

С помощью email-ext я могу отправлять электронные письма, когда они становятся нестабильными, но, поскольку тесты юнитов в браузерах несколько нестабильны, я не хочу, чтобы они появлялись при первом сбое, что-то вроде 3 подряд или 80% последнего x- Минуты / пробеги

Ваши юнит-тесты - это минуты / прогоны? Это больше тест производительности, чем юнит тест? Если это меньше модульный тест, а скорее тест производительности / нагрузки, мы использовали JMeter (у Hudson есть плагин, как и Maven) с большим эффектом, который позволяет нам задать%, когда установить сборку как нестабильную или неудачную.

...