У меня есть набор тестов на огурец (java), которые я хотел бы запустить через командную строку, настраивая системные свойства для определения таких вещей, как браузер и запускать ли он локально или на BrowsersStack. Система построена с Gradle.
Я посмотрел на этот вопрос и перепробовал все возможные варианты, но безрезультатно. Я также заметил, что, хотя вопрос был задан и ответ был принят в 2014 году, есть ряд комментариев 2018 года, в которых говорится, что подход не работает. Подобный подход подробно описан в этом вопросе , и в комментариях предполагается, что он работает для огурца.
Мой файл gradle.build выглядит так:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.0-RC2'
}
}
plugins {
id 'com.github.spacialcircumstances.gradle-cucumber-reporting' version '0.0.12'
}
repositories {
mavenCentral()
}
apply plugin: 'org.junit.platform.gradle.plugin'
group 'org.myorg'
version '0.1'
junitPlatform {
platformVersion '1.0.0-RC2'
reportsDir file('build/test-results/junit-platform')
}
apply plugin: 'java'
sourceCompatibility = 1.8
cucumberReports {
outputDir = file('target/cucumber-report')
buildName = '0'
reports = files('target/cucumber-report/json/cucumber-report.json')
parallelTesting = false
}
test {
ignoreFailures = true
filter
{
// Include all tests.
includeTestsMatching "*.*"
}
systemProperty "localBrowser", System.getProperty("localBrowser")
}
dependencies {
compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.5.1'
testCompile group: 'junit', name: 'junit', version: '4.12'
testCompile group: 'org.testng', name: 'testng', version: '6.9.10'
compile group: 'com.browserstack', name: 'browserstack-local-java', version:'1.0.1'
// The cucumber version is 2.+ as 3+ cannot run tests from within IntelliJ ~_~
// Fixed for v 4! :-)
testCompile 'io.cucumber:cucumber-java:4.+'
testCompile 'io.cucumber:cucumber-junit:4.+'
testCompile group: 'io.cucumber', name: 'cucumber-picocontainer', version: '4.+'
testCompile group: 'org.hamcrest', name: 'hamcrest-all', version: '1.3'
testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.0.0-RC2'
testCompile group: 'org.junit.platform', name: 'junit-platform-launcher', version: '1.0.0-RC2'
testRuntime group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.0.0-RC2'
testRuntime group: 'org.junit.vintage', name: 'junit-vintage-engine', version: '4.12.0-RC2'
}
Код, который проверяет системное свойство и должен его загрузить, содержится в операторе @Before:
@Before
public void setUp(Scenario scenario) throws Exception {
System.out.println(scenario);
System.out.println("Value of localBrowser is " + System.getProperty("localBrowser"));
// Local browser or Browserstack? Default is local.
if (System.getProperty("localBrowser") == null) {
System.setProperty("localBrowser", "true");
}
System.out.println("Value of localBrowser is " + System.getProperty("localBrowser"));
...
Когда я запускаю скрипт, используя gradle test -DlocalBrowser=false --rerun-tasks
, вывод выглядит так:
> Task :junitPlatformTest
cucumber.runner.Scenario@2e377400
Value of localBrowser is null
Value of localBrowser is true
Tests running locally on Chrome
Итак, localBrowser
не берется или не передается в модуль, и мой сценарий затем устанавливает его на true
, поскольку он находит нулевое значение, и запускает все тесты в локальном браузере в следующем коде.
Я что-то упускаю из виду или есть проблема с более новой версией Gradle? Я использую версию 5.0.