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上运行,则您的测试应如下所示:​​​​​​​

@Testpublic 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”。

欢迎关注 微信公众号【测试备忘录】,查看更多内容,一起交流呀

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值