TestNG学习-组的使用

简介: TestNG学习-组的使用

1. 测试方法

测试方法用@Test注释。除非您在testng.xml中将allow-return-values设置为true,否则将忽略用@Test注释的返回值的方法,设置方式如下:

<suite allow-return-values="true">
or 
<test allow-return-values="true">

2. 测试组

   TestNG允许对测试方法进行复杂的分组。不仅可以声明方法属于组,还可以指定包含其他组的组。然后可以调用TestNG并要求它包括一组特定的组(或正则表达式),而排除另一组。如果要背对背运行两组不同的测试,这将提供最大的灵活性来划分测试的方式,并且不需要重新编译任何内容。

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

   以两类比较普遍的测试为例

   1) check-in 测试。 在提交新代码之前,应先运行这些测试。 它们通常应该很快,并且只需确保没有破坏基本功能即可。

   2) 功能性测试(检查性测试)。 这些测试应涵盖软件的所有功能,并且每天至少要运行一次,理想情况下,可以持续运行。

   通常, check-in 测试是功能测试的子集。TestNG允许通过测试组以非常直观的方式指定此名称。例如,可以通过说整个测试类都属于“ functest”组来构造自定义的测试,另外,还有几个方法属于“ checkintest”组,

   示例1如下:

public class Test1 {
  @Test(groups = { "functest", "checkintest" })
  public void testMethod1() {
  }
  @Test(groups = {"functest", "checkintest"} )
  public void testMethod2() {
  }
  @Test(groups = { "functest" })
  public void testMethod3() {
  }
}

调用的方式:

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

以上调用方式将运行该类中的所有测试方法,而使用checkintest调用它将仅运行testMethod1()和testMethod2()。

   示例2:

使用类似正则表达式的示例。假设您的某些测试方法不应在Linux上运行,则您的测试应如下所示:

@Test
public class Test1 {
  @Test(groups = { "windows.checkintest" })
  public void testWindowsOnly() {
  }
  @Test(groups = {"linux.checkintest"} )
  public void testLinuxOnly() {
  }
  @Test(groups = { "windows.functest" )
  public void testWindowsToo() {
  }
}

使用以下testng.xml来只运行windows的测试方法

<test name="Test1">
  <groups>
    <run>
      <include name="windows.*"/>
    </run>
  </groups>
  <classes>
    <class name="example1.Test1"/>
  </classes>
</test>
注意:TestNG使用正则表达式,而不使用wildmats的方式。 注意区别(例如,“ anything”由“.*”(点星号)而不是“*”匹配)。

3. 方法的组

使用 include 或 exclude 实现自定义的方法:

<test name="Test1">
  <classes>
    <class name="example1.Test1">
      <methods>
        <include name=".*enabledTestMethod.*"/>
        <exclude name=".*brokenTestMethod.*"/>
      </methods>
     </class>
  </classes>
</test>

这样可以方便地停用单个方法而无需重新编译任何东西,但是不建议过多使用该技术,因为如果开始重构Java代码,它可能会使测试框架崩溃(在Java中使用的正则表达式可能不再与新的方法匹配)。


4. 排除组

   testng不仅可以排除方法,也可以排除组:

   例如,由于最近的更改而使测试暂时中断是很常见的,还没有时间修复但是确实希望对功能测试进行重新完整的运行,这时需要停用这些测试,但是记得要重新再加回来。

   解决此问题的一种简单方法是创建一个名为“broken”的组,并使这些测试方法属于该组。例如:

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

testng.xml的设置:

<test name="Simple example">
  <groups>
    <run>
      <include name="checkintest"/>
      <exclude name="broken"/>
    </run>
  </groups>
  <classes>
    <class name="example1.Test1"/>
  </classes>
</test>
注:也可以通过使用@Test和@Before/@After注解上“enabled”是否可用的属性来达到禁用效果。

5. 部分组

可以在类级别定义组,然后在方法级别添加组:

@Test(groups = { "checkin-test" })
public class All {
  @Test(groups = { "func-test" )
  public void method1() { ... }
  public void method2() { ... }
}

在该类中,method2()是“ checkin-test”组的一部分,该组在类级别定义,而method1()既属于“ checkin-test”又属于“ func-test”。


   今天就学习到这里,欢迎关注交流,一起进步~

相关文章
|
数据库
Activiti进阶篇-组任务
Activiti进阶篇-组任务
Activiti进阶篇-组任务
|
Java 测试技术 Maven
TestNG学习-运行一个测试实例
TestNG学习-运行一个测试实例
TestNG学习-运行一个测试实例
|
XML Java 关系型数据库
TestNG学习-参数的使用
TestNG学习-参数的使用
TestNG学习-参数的使用
|
XML Java 测试技术
TestNG学习-运行相关设置
TestNG学习-运行相关设置
|
XML 数据格式
TestNG学习-依赖
TestNG学习-依赖
|
XML Java 测试技术
TestNG学习(一)
TestNG学习(一)
|
测试技术 Android开发
eclipse 直接右键工程new 看不到JUnit的情况以及JUnit的作用、使用举例和JUnit的注意事项
eclipse 直接右键工程new 看不到JUnit的情况以及JUnit的作用、使用举例和JUnit的注意事项
279 0
eclipse 直接右键工程new 看不到JUnit的情况以及JUnit的作用、使用举例和JUnit的注意事项
|
Java jenkins 测试技术
Jenkins ANT+JUNIT实例(学习笔记二十七)
转载:http://www.cnblogs.com/helloIT/p/5761740.html 1.环境   windows10 专业版   Jenkins 2.7   apache-ant-1.9.6   JDK1.8.0_20 2.整体思路   jdk:支持ant脚本中的编译、测试等target。
1280 0
|
测试技术 Android开发 数据格式
|
测试技术 Android开发