Выполнение определенной группы testng с использованием build.gradle - PullRequest
0 голосов
/ 08 января 2019

Я проверил следующие вопросы, но ни один из них не помог -

Gradle + TestNG работает только указанная группа

Синтаксис команды Gradle для выполнения тестов TESTNG как группы

Проект, который я использую, доступен по адресу - https://github.com/tarun3kumar/gradle-demo Это стандартный проект Maven, и я не использую файл testng.xml. Метод испытания - com.org.corpsite.LandingPageTest сгруппирован как - smoke

Я запускаю тест как - gradle clean test, и тест выполняется. Тест не пройден по подлинной причине, и давайте его проигнорируем.

Затем я прошел тестовую группу из командной строки как - gradle clean test -P testGroups='doesnotexist' Обратите внимание, что «didnotexist» не является допустимой группой, но она все еще выполняет тест.

После этого я добавил includeGroups в build.gradle как -

test {
    useTestNG() {
        includeGroups 'smoke'
    }
}

и теперь gradle clean test -P testGroups='doesnotexist' терпит неудачу с NPE на одном из классов Java - java.lang.NullPointerException at com.org.pageobjects.BasePage.findElements(BasePage.java:24)

Вопросы -

  1. Какой флажок справа указывает группу тестирования из командной строки? Кажется, -P неверно, иначе gradle clean test -P testGroups='doesnotexist' не выполнит тест.
  2. Что не так с указанием includeGroups 'smoke'?

Я использую Gradle 5.1 на MacBook Pro

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Вот набор вещей, которые необходимо сделать, чтобы заставить это работать.

  1. Вам необходимо добавить атрибут alwaysRun=true к аннотациям @BeforeMethod и @AfterMethod из базового класса com.org.core.SelTestCase. Это необходимо для того, чтобы TestNG всегда выполнял эти методы настройки независимо от того, какая группа выбрана.
  2. Измените задачу test в вашем build.gradle, чтобы она выглядела следующим образом:
test {
    def groups = System.getProperty('groups', 'smoke')
    useTestNG() {
        includeGroups groups
    }
}

Это гарантирует, что мы попытаемся извлечь значение аргумента JVM groups. Если он не указан, мы по умолчанию smoke.

Теперь мы выполним тесты, указав необходимые группы, используя следующую команду:

./gradlew clean test --info -Dgroups=smoke

Теперь, если мы выполним приведенную ниже команду, вы заметите, что тесты не выполняются.

./gradlew clean test --info -Dgroups=smoke1

Вот патч, который вы можете применить к своему проекту

From 25133a5d2a0f96d4a305f34e1f5a17e70be2bb54 Mon Sep 17 00:00:00 2001
From: Krishnan Mahadevan <krishnan.mahadevan@stackoverflow.com>
Date: Mon, 14 Jan 2019 22:38:27 +0530
Subject: [PATCH] Fixing the bug

---
 build.gradle                                | 2 ++
 src/main/java/com/org/core/SelTestCase.java | 5 +++--
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/build.gradle b/build.gradle
index 10ba91d..2d08991 100644
--- a/build.gradle
+++ b/build.gradle
@@ -38,7 +38,9 @@ task smokeTests(type: Test) {
 }*/

 test {
+    def groups = System.getProperty('groups', 'smoke')
     useTestNG() {
+        includeGroups groups
     }
 }

diff --git a/src/main/java/com/org/core/SelTestCase.java b/src/main/java/com/org/core/SelTestCase.java
index 80cad09..651529a 100644
--- a/src/main/java/com/org/core/SelTestCase.java
+++ b/src/main/java/com/org/core/SelTestCase.java
@@ -22,7 +22,7 @@ public class SelTestCase {

     private WebDriver webDriver;

-    @BeforeMethod
+    @BeforeMethod(alwaysRun = true)
     @Parameters({"browser", "url"})
     public void setUp(@Optional("firefox") String browser, @Optional("https://www.google.com/") String URL) {
         switch (browser) {
@@ -40,8 +40,9 @@ public class SelTestCase {
         webDriver.get(URL);
     }

-    @AfterMethod
+    @AfterMethod(alwaysRun = true)
     public void tearDown() {
         webDriver.quit();
     }
+
 }
-- 
2.20.1

Вы можете сохранить вышеуказанное содержимое в файл, скажем mypatch.patch, а затем применить исправление, используя инструкции, описанные в в этом сообщении StackOverFlow .

0 голосов
/ 08 января 2019

Вы должны иметь возможность запустить определенный тест с флагом 'testInstrumentationRunnerArguments':

-Pandroid.testInstrumentationRunnerArguments.class=com.abc.NameOfMyTestClass
...