2012-02-16 4 views
7

Я написал несколько тестов XMLUnit (которые вписываются в структуру JUnit) в groovy и может легко их выполнять в командной строке в соответствии с groovy doco, но я не совсем понимаю, что еще мне нужно сделать для этого для получения вывода xml, который необходим Jenkins/Hudson (или другому) для отображения результатов прохода/сбоя (например, this) и подробного отчета об ошибках и т. д. (например, this). (извинения владельцев изображений)Как я могу подготовить отчет об испытаниях JUnit для отличных тестов, подходящих для потребления Jenkins/Hudson?

В настоящее время мой стартовый сценарий заключается в следующем:

def allSuite = new TestSuite('The XSL Tests') 

//looking in package xsltests.rail.* 
allSuite.addTest(AllTestSuite.suite("xsltests/rail", "*Tests.groovy")) 

junit.textui.TestRunner.run(allSuite) 

и это производит что-то вроде этого:

Running all XSL Tests... 
.... 
Time: 4.141 

OK (4 tests) 

Как я могу сделать это создать XML-отчет теста JUnit файл, подходящий для чтения Дженкинсом/Хадсоном?

Нужно ли начинать тесты с другого бегуна JUnit?

Я видел this Ответ, но хотел бы избежать необходимости писать собственный тестовый отчет.

+1

Вы используете некоторые рамки тестирования? Что вы используете для создания проекта? –

+0

Есть ли отвращение к использованию инструмента построения, такого как Gradle/Maven/Ant? –

+0

@Eric Это побочный проект, и он надеялся что-то ускорить и запустить. Тем не менее, я могу пойти по пути обучения и использования Грэдля, поскольку он находится в моей сфере «вещей, чтобы учиться». –

ответ

4

После небольшого взлома я принял предложение Эрика Венделина и ушел с Грейдл.

Чтобы сделать это, я перенес свои тесты модульной сборки в необходимую структуру каталогов src/test/groovy/с поддерживающими ресурсами (входными и ожидаемыми выходными XML-файлами), входящими в каталог/src/test/resources /.

Все необходимые библиотеки были сконфигурированы в сборке.Gradle файл, как описано (в полном объеме) здесь:

apply plugin: 'groovy' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    testCompile group: 'junit', name: 'junit', version: '4.+' 

    groovy module('org.codehaus.groovy:groovy:1.8.2') { 
     dependency('asm:asm:3.3.1') 
     dependency('antlr:antlr:2.7.7') 
     dependency('xmlunit:xmlunit:1.3') 
     dependency('xalan:serializer:2.7.1') 
     dependency('xalan:xalan:2.7.1') 
     dependency('org.bluestemsoftware.open.maven.tparty:xerces-impl:2.9.0') 
     dependency('xml-apis:xml-apis:2.0.2') 
    } 
} 

test { 
    jvmArgs '-Xms64m', '-Xmx512m', '-XX:MaxPermSize=128m' 

    testLogging.showStandardStreams = true //not sure about this one, was in official user guide 

    outputs.upToDateWhen { false } //makes it run every time even when Gradle thinks it is "Up-To-Date" 
} 

Это относится к Groovy плагина устанавливает использовать Maven, чтобы захватить указанную зависимость, а затем добавляет некоторые дополнительные значения для встроенной в задачу «тест» ,

Еще одна вещь в последней строке, которая заставляет Gradle запускать все мои тесты каждый раз, а не только те, которые, по его мнению, являются новыми/изменены, это заставляет Дженкинса играть хорошо.

Я также создал файл gradle.properties, чтобы пройти через прокси и т.д. корпоративный/брандмауэр:

systemProp.http.proxyHost=10.xxx.xxx.xxx 
systemProp.http.proxyPort=8080 
systemProp.http.proxyUser=username 
systemProp.http.proxyPassword=passwd 

С этим, я создал проект «свободный стиль» в Дженкинс, что опросы нашего Mercurial репо периодически и всякий раз, когда кто-либо совершает обновление XSL на репо, все тесты будут выполняться.

Одна из моих первоначальных целей заключалась в том, чтобы производить стандартную графику прохождения/неудачи Jenkins/Hudson и отчеты JUnit, что является успешным: Pass/Fail с JUnit Reports.

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

0

Поскольку вы просите раскрывать отчет Дженкинсу/Хадсону, я предполагаю, что у вас есть сборка Maven/Ant/etc, которую вы можете запустить. Если это правда, решение прост.

Прежде всего, разница между испытаниями Groovy и Java JUnit практически не существует. Итак, все, что вам нужно сделать, это добавить задачу/плагин junit Ant/Maven к вашей сборке и выполнить ее тесты Groovy junit (как и вы, если бы они были написаны на Java). Это выполнение создаст отчеты об испытаниях. Оттуда вы можете просто сконфигурировать свою сборку Hudson/Jenkins, чтобы посмотреть на каталог, где отчеты о тестах создаются во время процесса сборки.

+0

Нет. Я не использую фреймворк сборки, такой как Maven или Ant, это всего лишь набор модульных тестов. Нет сборки, только серия тестов с надеждой на получение пропускной способности/провала при каждом запуске. –

0

Вы можете написать собственный заказ RunListener (или SuiteRunListener). Вам по-прежнему требуется написать код, но он намного чище, чем скрипт, на который вы указали ссылку. Если вы хотите, я могу отправить вам код для репортера JUnit, который я написал на JavaScript для Jasmine, и вы можете «перевести» его в Groovy.

2

я найти самый быстрый способ загрузился этот материал с Gradle:

# build.gradle 
apply plugin: 'groovy' 

task initProjectStructure() << { 
    project.sourceSets.all*.allSource.sourceTrees.srcDirs.flatten().each { dir -> 
     dir.mkdirs() 
    } 
} 

gradle initProjectStructure Затем запустите и переместить источник в src/main/groovy и испытания test/main/groovy.

Кажется, что много (на самом деле это < 5 минут работы), но вы получаете много вещей бесплатно. Теперь вы можете запустить gradle test, и он будет запускать ваши тесты и создавать JUnit XML, который вы можете использовать в build/test-reports в своем каталоге проектов.

+1

Спасибо за небольшой толчок к использованию Gradle. Хотя мой ответ (ясно) решил мою проблему, 50-процентная щедрость ваша. –

+0

Спасибо :) - Я думаю, вы полюбите Gradle. –

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