使用build.gradle执行特定的testng组

时间:2019-01-08 10:41:58

标签: gradle testng build.gradle

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

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)

上由于NPE失败

问题-

  1. 从命令行指定测试组的正确标志是什么?似乎-P是错误的,否则gradle clean test -P testGroups='doesnotexist'无法执行测试。
  2. 指定includeGroups 'smoke'有什么问题?

我在Macbook Pro上使用Gradle 5.1

2 个答案:

答案 0 :(得分:1)

要使此功能正常运行,需要完成以下操作。

  1. 您需要将属性alwaysRun=true添加到基类@BeforeMethod的{​​{1}}和@AfterMethod批注中。这是为了确保TestNG始终执行这些配置方法,而不管选择了哪个组。
  2. 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