web-dev-qa-db-fra.com

Tâche Gradle vérifier si la propriété est définie

J'ai une tâche gradle qui exécute une suite de tests testng. Je veux pouvoir passer un indicateur à la tâche afin d'utiliser un fichier de suite xml testng spécial (ou simplement utiliser la suite par défaut si l'indicateur n'est pas défini).

gradle test

Devrait exécuter la suite standard de tests par défaut

gradle test -Pspecial

Devrait exécuter la suite spéciale de tests

J'ai essayé quelque chose comme ça:

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

Mais j'obtiens une erreur de propriété non définie. Quelle est la bonne façon de procéder?

31
user2506293
if (project.hasProperty('special'))

devrait le faire.

Notez que ce que vous faites pour sélectionner une suite de test ne fonctionnera pas, AFAIK: la tâche de test n'a pas de méthode test(). Reportez-vous à https://discuss.gradle.org/t/how-to-run-acceptance-tests-with-testng-from-gradle/4107 pour un exemple de travail:

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

Cela a fonctionné pour moi:

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