我检查了以下问题,但没有一个帮助-
Gradle + TestNG Only Running Specified Group
Gradle command syntax for executing TESTNG tests as a group
我正在使用的项目位于-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类之一-java.lang.NullPointerException
at com.org.pageobjects.BasePage.findElements(BasePage.java:24)
问题-
-P
是错误的,否则gradle clean test -P testGroups='doesnotexist'
无法执行测试。includeGroups 'smoke'
有什么问题?我在Macbook Pro上使用Gradle 5.1
答案 0 :(得分:1)
要使此功能正常运行,需要完成以下操作。
alwaysRun=true
添加到基类@BeforeMethod
的{{1}}和@AfterMethod
批注中。这是为了确保TestNG始终执行这些配置方法,而不管选择了哪个组。com.org.core.SelTestCase
中的test
任务更改为如下所示:build.gradle
这确保了我们尝试提取JVM参数test {
def groups = System.getProperty('groups', 'smoke')
useTestNG() {
includeGroups groups
}
}
的值。如果未指定,则默认为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
文件中,然后按照this StackOverFlow post中详细说明使用补丁程序。
答案 1 :(得分:0)
您应该能够使用'testInstrumentationRunnerArguments'标志运行特定的测试:
-Pandroid.testInstrumentationRunnerArguments.class=com.abc.NameOfMyTestClass