在Gradle

时间:2016-07-12 13:16:30

标签: gradle testng

我有一个很大的TestNG套件,可以通过Gradle中的'test'任务调用。套件运行得很好,但是我向Gradle询问测试套件信息时遇到了一些困难。具体来说,包括和排除组列表。

我的testng.xml中的组配置如下所示:

<groups>
  <run>
    <exclude name="notReady" />
  </run>
</groups>

我的目标是为用户提供一种方法,使用命令行属性在运行时指定包含/排除组,然后将它们添加到testng配置中的相应列表中。唯一的问题是,我仍然需要尊重testng.xml文件中现有的include / exclude配置。

这是我在我的任务块中尝试做的一个简短的build.gradle示例(减去命令行解析以保持代码简单):

test {
    useTestNG() {
        suites("src/test/resources/testng.xml")
        Set<String> excludeGroups = getExcludeGroups() // Returns an empty set
        excludeGroups.add("someOtherGroup")
        setExcludeGroups(excludeGroups)
    }
 }

我希望excludeGroups是['notReady'],但我得到一个空集。 getIncludeGroups()也会发生同样的事情。我怀疑这是因为在调用时,suites()实际上并没有加载和解析XML文件,但我没有证据支持它。

我一直在研究TestNGOptions文档,但我不确定我是做错了什么,或者这只是预期的行为。显然,我可以通过在build.gradle中定义我的默认包含/排除列表而不是testng.xml来解决这个问题,但这有点笨重。如果有人能为我发光,我会非常感激。

谢谢,

安迪

1 个答案:

答案 0 :(得分:0)

您可以使用beanshell使用xml本身在运行时配置组。

参考:http://testng.org/doc/documentation-main.html#beanshell