#java #gradle #build.gradle
#java #gradle #build.gradle
Вопрос:
Используя gradle, я пытаюсь сгенерировать html-отчет cucumber с прикрепленным к нему неудачным снимком экрана по соображениям безопасности, у меня не может быть онлайн-плагинов в файле build.gradle, поэтому мне приходится загружать необходимые jar и плагины, а также внедрять и настраивать библиотеку вручную в файле build.gradle.
Пожалуйста, подскажите, как настроить файл TestRunner в build.gradle и сгенерировать HTML-отчет cucumber с помощью файла cucumber.json
файл build.gradle
plugins {
id 'java'
id 'idea'
}
group 'org.example'
version '1.0-SNAPSHOT'
configurations {
cucumberRuntime.extendsFrom testRuntime
}
task cucumber() {
dependsOn assemble, compileTestJava
doLast {
javaexec {
main = "io.cucumber.api.cli.Main"
classpath = configurations.cucumberRuntime sourceSets.main.output sourceSets.test.output
args = ['--plugin', 'pretty', '--glue', 'stepDef', 'src/test/java']
}
}
}
repositories {
mavenCentral()
}
dependencies {
implementation fileTree(dir:System.getProperty("user.dir") '/Plugin',include:['*.jar'])
implementation files('junit-4.12')
implementation files('testng-6.7.jar')
implementation files('junit-jupiter-api-5.6.2')
implementation files('hamcrest-all-1.3')
.....................
Файл TestRunner
package TestRunner;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
import org.junit.runner.RunWith;
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/resources",
glue = "StepDefs",
plugin = {
"pretty", "html:target/cucumber-html-report", "json:target/cucumber.json", "pretty:target/cucumber-pretty.txt"
}
)
public class TestRunner {
}
Комментарии:
1. Переименовать
target/cucumber-html-report
вtarget/cucumber-html-report.html
.2. Не удалось выполнить задачу ‘: cucumber’. > Обработать ‘command’C:UsersAdministratorDocumentsEnvironmentopenjdk-13 33_windows-x64_binjdk-13binjava.exe «завершено с ненулевым значением выхода 1
3. @M.P.Korstanje если я запускаю простой функциональный файл, выполняется выполнение, но отчеты не генерируются, но если я запускаю эту задачу gradle, она выдает указанную выше ошибку
Ответ №1:
Что бы StepDefs
ни было…
Запуск с gradle cucumber --info
может быть полезен для отладки… поскольку в сообщении об ошибке finished with non-zero exit value 1
просто указывается «ошибка» или «безуспешно».
Для начала вам, вероятно, понадобятся эти зависимости Java:
testImplementation 'io.cucumber:cucumber-java:6.5.0'
testImplementation 'io.cucumber:cucumber-junit:6.5.0'
И, возможно, придется добавить gradle.cucumber
в качестве --glue
в аргументы args
, как предлагает документация. Скорее compileTestJava
должна быть testClasses
зависимость от задачи.
html
обычно это плагин, который ожидает выходной каталог, поэтому это должно выглядеть примерно так:
task cucumber() {
dependsOn assemble, testClasses
doFirst {
}
doLast {
javaexec {
main = 'io.cucumber.core.cli.Main'
classpath = configurations.cucumberRuntime sourceSets.main.output sourceSets.test.output
args = [
'--plugin', 'pretty', 'html:target/reports',
'--glue', 'gradle.cucumber',
'src/test/resources'
]
}
}
}
Они args
также могут быть аннотированы на Java; не уверен, какой из них имеет приоритет.
Вероятно, это не имеет смысла и только создает беспорядок при повторном определении аргументов.
Обязательно следуйте инструкции # 4:
Добавьте
.feature
файлы функций и связанные классы отображения шагов.java
вsrc/test/resources
иsrc/test/java
gradle.cucumber
соответственно в,, пакет.
-g
,--glue
ПУТЬ, откуда загружается код клея (определения шагов, хуки и плагины).
При запуске с JUnit также можно передавать параметры с junit-platform.properties
файлом.
Самым простым может быть начать с cucumber-java-skeleton
(известно, что он работает).
Ответ №2:
У меня это не сработало, если я запускаю эту задачу cucumber, она выдает мне ошибку
Задача: ошибка cucumber FAILED: не удалось найти или загрузить основной класс io.cucumber.api.cli.Main
Вызвано: java.lang.ClassNotFoundException: io.cucumber.api.cli.Main
Ошибка: Не удалось найти или загрузить основной класс io.cucumber.api.cli.Main
Я создал одну задачу cucumberRunner, которая выполняет TestRunner.java файл, он создает файл cucumber.json и html-отчет, но отчет htlm, но HTML-отчет не ожидается, странный, без графики и бесцветный, бесцветный
build.gradle, который я использую:
```
configurations {
cucumberRuntime {
extendsFrom testRuntime
}
}
task cucumber() {
dependsOn assemble, testClasses
doFirst {
}
doLast {
javaexec {
main = 'io.cucumber.api.cli.Main' // tried with io.cucumber.core.cli.Main
classpath = configurations.cucumberRuntime sourceSets.main.output sourceSets.test.output
args = [
'--plugin', 'pretty', 'html:target/reports',
'--glue', 'gradle.cucumber',
'src/test/resources'
]
}
}
}
task cucumberRunner(type: Test) {
include '**/**TestRunner.class'
}
Also I have added jars
implementation files('junit-4.12')
implementation files('testng-6.0.jar')
implementation files('cucumber-core-6.0.0')
implementation files('cucumber-java-6.0.0')
implementation files('cucumber-plugin-6.0.0')
implementation files('cucumber-junit-6.0.0')
implementation files('cucumber-testng-6.0.0')
implementation files('cucumber-jvm-deps-1.0.5')
implementation files('cucumber-gherkin-6.0.0')
implementation files('cucumber-java8-6.0.0')
implementation files('cucumber-html-0.2.3')
```