Переходим на Allure2 без Gradle плагина
После пары заметок о конференциях Testing Stage и Гейзенбаг пришла пора возвращаться к техническому хардкору. В этот раз я вам расскажу о способе интеграции Allure2 и Gradle.
Скажу сразу, данный способ будет валиден до выхода в релиз официального плагина Allure2 для Gradle. Пока же работающего плагина нет, придется позаниматься извращением.
Настраивать будем для Gradle 3 и TestNG. В принципе, все необходимое можно найти в официальной документации по Allure2.
Добавляем настройки в build.gradle:
apply plugin: 'java'
configurations {
agent
}
dependencies {
agent "org.aspectj:aspectjweaver:1.8.10"
compile "io.qameta.allure:allure-testng:2.0-BETA10"
}
test.doFirst {
jvmArgs "-javaagent:${configurations.agent.singleFile}"
}
test {
useTestNG()
systemProperty 'allure.results.directory', 'build/allure-results'
}
Теперь при прогоне тестов через command line или CI c помощью команды:
./gradlew clean test
У вас в папке build/allure-results
будут создаваться *.json файлы, из которых потом и будет генерироваться отчет.
Этого вполне достаточно, если вы запускаете тесты на CI и используете Allure2 плагин для генерации отчета. Увы, ставить плагины и обновлять не всегда выдается возможным, так как наш Jenkins содержат дяди с тайтлом "DevOps". Благо, уже давно есть HTML Publisher плагин, который позволяет рендерить сгенерированный отчет. Именно им мы и пользуемся.
Для того, чтобы сгенерировать отчет, нужно использовать allure command line.
Но я уже привык к тому, что вызываю gradle clean test
, и у меня после прогона тестов всегда генерируется отчет. Чтобы такого добиться с Allure2,
нужно самим пописать код.
Идем, значит, в bintray и качаем allure command line binary архив. Распаковываем и ложим в корень нашего проекта.
Дальше делаем свой таск в build.gradle:
task generateAllure(type: Exec) {
workingDir "$projectDir/allure/bin"
if (System.getProperty('os.name').toLowerCase(Locale.ROOT).contains('windows')) {
commandLine 'cmd', '/c', 'allure.bat', 'generate', '-c', '../../integration/build/allure-results'
} else {
commandLine 'bash', '-c', 'allure', 'generate', '-c',"$projectDir/integration/build/allure-results"
}
}
tasks.withType(Test)*.finalizedBy generateAllure
Собственно, на этом и все. Теперь при выполнении gradlew clean test
у нас будут прогоняться тесты и генерироваться отчет.
Про Allure2 и Python вы сможете послушать на мастер-классе, который назначен на 24.06.17.