gradle - 使用 build.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'不是一个有效的组,但它仍然执行测试。
在此之后,我添加includeGroups
为build.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)
问题 -
- 从命令行指定测试组的正确标志是什么?似乎
-P
是错误的,否则gradle clean test -P testGroups='doesnotexist'
不会执行测试。 - 指定有什么问题
includeGroups 'smoke'
?
我Gradle 5.1
在 macbook pro 上使用
解决方案
以下是要使其正常工作需要做的一系列事情。
- 您需要将属性添加
alwaysRun=true
到您的基类@BeforeMethod
和@AfterMethod
注释中com.org.core.SelTestCase
。这是为了确保无论选择哪个组,TestNG 始终执行这些配置方法。 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 帖子中详细说明的说明应用补丁。
推荐阅读
- php - 使用 laravel 将 Sql 服务器连接到 php (php artisan migrate)
- matlab - 将 GPX 绘制到底图上
- java - 我的java代码得到编译错误。如何修复它?
- c# - System.Collections.Generic 中的堆栈和列表在异步环境中不保持顺序
- regex - 我需要使用正则表达式作为文件名,而当前正则表达式不起作用
- data-structures - 删除节点后进行两次旋转以重新平衡 avl 树
- excel - 如何根据变量激活特定工作表。该变量将具有要激活的所需工作表的名称
- python-3.x - 如何删除特定发送给某人的邮件,并且该邮件位于已发送邮箱中?
- java - 如何替换从和返回到字节 [] 的子字符串
- azure - 无法使用 PowerShell 获取映射到 VM 的 Azure 存储帐户文件共享