Подтвердить что ты не робот

Gradle проверка задачи, если свойство определено

У меня есть задача gradle, которая выполняет тестовый набор testng. Я хочу, чтобы иметь возможность передать флаг в задачу, чтобы использовать специальный файл xml-пакета testng (или просто использовать пакет по умолчанию, если флаг не установлен).

gradle test

Должен запускать стандартный набор тестов по умолчанию

gradle test -Pspecial

Должен запускать специальный набор тестов

Я пробовал что-то вроде этого:

test {
    if (special) {
        test(testng_special.xml);
    }
    else {
        test(testng_default.xml);
    }
}

Но я получаю ошибку свойства undefined. Каков правильный способ сделать это?

4b9b3361

Ответ 1

if (project.hasProperty('special'))

должен это сделать.

Обратите внимание, что то, что вы делаете, чтобы выбрать набор testng, не будет работать, AFAIK: тестовая задача не имеет метода test(). Обратитесь к https://discuss.gradle.org/t/how-to-run-acceptance-tests-with-testng-from-gradle/4107 для рабочего примера:

test {
    useTestNG {
        suites 'src/main/resources/testng.xml'
    }
}

Ответ 2

Это сработало для меня:

test {
    if (properties.containsKey('special')) {
        test(testng_special.xml);
    }
    else {
        test(testng_default.xml);
    }
}

Ответ 3

От Gradle Документация:

-P, --project-prop

Устанавливает свойство проекта корневого проекта, например -Pmyprop = myvalue

Итак, вы должны использовать:

gradle test -Pspecial=true

со значением после имени свойства