美文网首页
TestNG之Test Group篇

TestNG之Test Group篇

作者: 丛鹏 | 来源:发表于2020-08-21 14:02 被阅读0次

一、Test Group(测试组)

TestNG 允许你将复杂的测试方法归类为不同的组。不仅仅是可以声明某个方法属于某个组,而且还可以让组包含其他的组。这样TestNG可以调用或者请求包含一组特定的组 (或者正则表达式)而排除其他不需要组的集合。这样,如果你打算将测试分成两份的时候,就无需重新编译。这个特点,会给你在划分组的时候带来很大的灵活性。

  组(Group)在testng.xml文件中指定,可以在<test>或<suite>标记下找到。<suite>标记中指定的组适用于下面的所有<test>标记。请注意,组在这些标记中是累积的:如果在<suite>中指定组“a”,在<test>中指定“b” ,则将包括“a”和“b”。

例如,通常将测试划分为两种类别是再常见不过的了:

  检查性测试(Check-in test):这些测试在你提交新代码之前就会运行。它们一般都是很快进行的,并且保证没有哪个基本的功能是不好使的。

  功能性测试(Functional test):这些测试涵盖你的软件中所有的功能,并且至少每天运行一次,不过你也可能希望他们持续的运行。

  典型的来说,检测性测试通常是功能性测试的一个子集。TestNG允许你根据个人感觉来进行组划分。例如,你可能希望把你所有的测试类都划归为"functest"组,并且额外的有几个方法输入"checkintest"组。

TestNG允许您以非常直观的方式使用测试组指定。例如,您可以通过说明您的整个测试类属于“functest”组来构建测试,另外还有一些方法属于“checkintest”组:

package hongge;

import org.testng.annotations.Test;

importstatic org.testng.Assert.assertEquals;

import hongge.TestSum;

publicclass Test1 {

    @Test(groups = { "functest", "checkintest" }) 

      publicvoid testMethod1() { 

      } 

      @Test(groups = {"functest", "checkintest"} ) 

      publicvoid testMethod2() { 

      } 

      @Test(groups = { "functest" }) 

      publicvoid testMethod3() { 

      } 

}

通过下面的内容调用TestNG

<test name="Test1"><groups><run><include name="functest"/></run></groups><classes><class name="example1.Test1"/></classes></test>

以上会运行上面那个类中所有的测试,当要使用checkintest进行调用的时候,就仅仅运行testMethod1()和testMethod2()。

下面是另外一个例子。这次使用正则表达式。假定有些测试方法不应该运行在Linux环境下,你的测试会看起来像:

package hongge;

import org.testng.annotations.Test;

importstatic org.testng.Assert.assertEquals;

import hongge.TestSum;

@Test

publicclass Test1 {

    @Test(groups = {"windows.checkintest"}) 

    publicvoid testWindowsOnly() { 

    } 

    @Test(groups = {"linux.checkintest"}) 

    publicvoid testLinuxOnly() { 

    } 

    @Test(groups = {"windows.functest"}) 

    publicvoid testWindowsToo() { 

    } 

}

然后你就可以使用下面这个 testng.xml 来只运行在Windows下的方法:

<test name="Test1">

  <groups> 

    <run> 

      <include name="windows.*"/> 

    </run> 

  </groups> 

  <classes> 

    <class name="example1.Test1"/> 

  </classes> 

</test>

注意:TestNG使用的是正则表达式,而不是通配符。注意这二者的区别

例如,"anything" 是匹配于 ".*" -- 点和星号 -- 而不是星号 "*".

二、MetaGroups(组中组)

   测试组也可以包含其他组。这样的组叫做“元组”(MetaGroups)。例如,你可能要定义一个组all来包含其他的组,chekcintest 和functest。"functest"本身只包含了组windows和linux,而"checkintest"仅仅包含windows。你就可以在属性文件中这样定义:

<test name="Regression1">

  <groups> 

    <define name="functest"> 

      <include name="windows"/> 

      <include name="linux"/> 

    </define> 

    <define name="all"> 

      <include name="functest"/> 

      <include name="checkintest"/> 

    </define> 

    <run> 

      <include name="all"/> 

    </run> 

  </groups> 

  <classes> 

    <class name="test.sample.Test1"/> 

  </classes> 

</test> 

三、排除组

TestNG 允许你包含组,当然也可以排除之。

譬如说,因为最近的改动,导致当前的测试中断并且,你还没有时间修复这些问题都是司空见惯的。但是,你还需要自己的功能测试可以正确运行,所以,制药简单的让这些不需要的测试失效就可以了。但是别忘记在以后需要的时候,要重新让其生效。

   一个简单的办法来解决这个问题就是创建一个叫做"broken"组,然后使得这些测试方法从属于那个组。例如上面的例子,假设我知道testMethod2()会中断,所以我希望使其失效:

@Test(groups = {"checkintest", "broken"} )

 publicvoidtestMethod2() {}

<test name="Simple example">

  <groups> 

    <run> 

      <include name="checkintest"/> 

      <exclude name="broken"/> 

    </run> 

  </groups> 

  <classes> 

    <class name="example1.Test1"/> 

  </classes> 

</test>

通过这种办法,我们既可以得到整洁的测试运行,同时也能够跟踪那些需要稍后修正的中断的测试。

注意:你可以可以通过使用"enabled"属性来完成,这个属性适用于@Test 和 @Before/After annotation。

四、局部组

@Test(groups = { "checkin-test" })

 publicclass All {

    @Test(groups = { "func-test" ) 

     publicvoid method1() { ... }  

    publicvoid method2() { ... } 

在这个类中,method2() 类级组"checkin-test"的一部分,而method1()即属于"checkin-test"也属于"func-test"组。

五、方法组

你可以排除或者包含单个方法

<test name="Test1">

  <classes>

    <class name="example1.Test1">

      <methods>

        <include name=".*enabledTestMethod.*"/>

        <exclude name=".*brokenTestMethod.*"/>

      </methods>

    </class>

  </classes>

</test>

相关文章

  • TestNG之Test Group篇

    一、Test Group(测试组) TestNG 允许你将复杂的测试方法归类为不同的组。不仅仅是可以声明某个方法属...

  • TestNG

    What is TestNG? TestNG is framework of unit test. How to ...

  • TestNG的group注解

    在使用testng时,常使用@Beforeclass来做一些初始化工作,但是在@Test注解中加入了group属性...

  • TestNg Beginner's Guide--阅后总结之Te

    Textng.xml是TestNG的配置文件,用来定义TestNG中的test suit和test。Textng....

  • spring boot 测试的几种写法

    用testNG做测试 import org.testng.annotations.Test; @SpringBoo...

  • TestNG之Test Method

    一、设置参数 测试方法是可以带有参数的。每个测试方法都可以带有任意数量的参数,并且可以通过使用TestNG的@Pa...

  • 参考站点

    一、TestNG的testng.xml配置概述 二、TestNG.xml参数配置-如何控制部分执行@test方法 ...

  • TestNG系列-TestNG进阶

    猛戳:第一篇-TestNG入门 时隔许久,不能再拖拉了。今天主要讲一下第二篇testng的一些特性。 1.Test...

  • 基于Appium的Android自动化测试(二)——TestNG

    本文章转载于搜狗测试 TestNG介绍 TestNG意为test next generation,是Java中的一...

  • TestNG异常测试

    TestNG异常测试 测试中,有时候我们期望某些代码抛出异常。TestNG通@Test(expectedExcep...

网友评论

      本文标题:TestNG之Test Group篇

      本文链接:https://www.haomeiwen.com/subject/gzrujktx.html