Junit4+Cucumber+Gradle свойсва через командную строку

У меня такой таск был в TestNG
task testAll (type: Test) {
//useTestNG() {
{
suites ‘src/test/resources/testng.xml’
}
if(project.hasProperty(‘baseUrl’)) {
systemProperty ‘baseUrl’ , “${baseUrl}”
}
if(project.hasProperty(‘target’)) {
systemProperty ‘target’, “${target}”
}
//maxParallelForks = 2 //запуск 3 потока
}
и запуск через консоль gradlew -PbaseUrl=http://testme testAll clean test 1>out.log 2>err.log

Как в junit можнно реализовать подобное?

Вроде так и делаете, разницы не вижу (возможно я чего-то не понимаю)

task testAll(type: Test) {
    if (project.hasProperty('baseUrl')) {
        systemProperty 'baseUrl', "${baseUrl}"
    }
    if (project.hasProperty('target')) {
        systemProperty 'target', "${target}"
    }
}

jUnit дефолтный раннер тестов в gradle, так что команда gradlew test запустит тесты с jUnit

P.S.: а вообще было бы не плохо узнать какую цель преследуете, возможно Вам подскажут другой вариант решения, отличный от Вашего )

2 лайка

Когда запускаю через командную строку адрес baseUrl не передается, и открывается адрес второй из списка properties.getProperty(“web.baseUrl”). А должен передаваться адрес, который указан в аргументе запуска командной строки
-PbaseUrl=http://testme testAll clean test
в коде так
driver.get(System.getProperty(“baseUrl”, properties.getProperty(“web.baseUrl”)));

Есть 2 варианта:

  1. проперти в таске задается неверно
task testAll(type: Test) {
    if (project.hasProperty('baseUrl')) {
        System.setProperty('baseUrl', "${baseUrl}")
    }
}
  1. раз Вы используете системные проперти в тесте, то можно сразу задавать их же, пропуская проперти проекта при запуске таски
-DbaseUrl=http://testme testAll clean test
1 лайк