首页 > 解决方案 > 使用 build.gradle 执行特定的 testng 组

问题描述

我检查了以下问题,但没有一个有帮助 -

Gradle + TestNG 仅运行指定组

作为一个组执行 TESTNG 测试的 Gradle 命令语法

我正在使用的项目位于 - https://github.com/tarun3kumar/gradle-demo 它是标准的 maven 项目,我没有使用 testng.xml 文件。测试方法 - com.org.corpsite.LandingPageTest分组为 -smoke

我正在运行测试 -gradle clean test并执行测试。由于真正的原因测试失败,我们忽略它。

然后我从命令行传递了测试组- gradle clean test -P testGroups='doesnotexist' 注意'doesnotexist'不是一个有效的组,但它仍然执行测试。

在此之后,我添加includeGroupsbuild.gradle-

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

现在gradle clean test -P testGroups='doesnotexist'在其中一个 java 类上出现 NPE 失败-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 上使用

标签: gradletestngbuild.gradle

解决方案


以下是要使其正常工作需要做的一系列事情。

  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 帖子中详细说明的说明应用补丁。


推荐阅读