美文网首页TestNG异常测试
TestNG的测试方法、测试组,异常

TestNG的测试方法、测试组,异常

作者: 我为峰2014 | 来源:发表于2017-11-14 18:51 被阅读486次

测试方法

测试方法被注解为@Test。注释的方法与@Test碰巧返回值将被忽略,可以设置允许回值设置为true在你的testng.xml:

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

测试组

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

组在的testng.xml文件中指定,可以发现无论是<test><suite>标签。指定组<suite>标签适用于所有的<test>下方标签。需要注意的是群体标签:如果指定组的“a”在<suite>标签中和b在<test>标签中,那么这两个“a”和“b”将被包括在内

将测试划分为两种类别:

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

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

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

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

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

  @Test(groups = { "functest" })
  public void testMethod3() {
  }
}

通过下面的内容调用TestNG

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

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

使用正则表达式

@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使用的是正则表达式,而不是通配符。注意这二者的区别(例如,"anything" 是匹配于 "."代表点和星号,而不是星号 "")

组中组

测试组也可以包含其他组。这样的组叫做“元组"(MetaGroups)"

例如,可能要定义一个组"all"来包含其他的组,"chekcintest""functest""functest"本身只包含了组windowslinux,而"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>

排除组

stNG 允许你包含组,当然也可以排除

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

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

从运行中排除这个组:

<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" })
public class All {

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

  public void method2() { ... }
}

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

异常

测试中,有时候我们期望某些代码抛出异常

TestNG通过@Test(expectedExceptions) 来判断期待的异常, 并且判断Error Message

import org.testng.Assert;
import org.testng.annotations.Test;

public class ExpectedExceptionTest {
    String message = "Manisha"; 
    MessageUtil messageUtil = new MessageUtil(message);
       
    @Test(expectedExceptions = ArithmeticException.class)
    public void testPrintMessage() {    
        System.out.println("Inside testPrintMessage()");     
        messageUtil.printMessage();     
   }
   @Test
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Manisha";
      Assert.assertEquals(message,messageUtil.salutationMessage());
   }
}

相关文章

  • TestNG的测试方法、测试组,异常

    测试方法 测试方法被注解为@Test。注释的方法与@Test碰巧返回值将被忽略,可以设置允许回值设置为true在你...

  • TestNG异常测试

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

  • TestNG之Test Group篇

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

  • TestNG用法总结

    TestNG用法总结 常用注解见表格 TestNG的简单使用 xml: 运行结果如图:运行结果 组测试组测试即为在...

  • TestNG并发加速自动化测试执行

    简介 TestNG是一个开源自动化测试工具,TestNG源于Junit,最初用来做单元测试,可支持异常测试,忽略测...

  • TestNG异常测试

    @Test(expectedExceptions = xxx) 声明 runTimeExceptionFailed...

  • TestNG 异常测试

    在开始前先大概了解下 Java 中异常的分类有两种异常:Error 和 Exception Error:称为错误,...

  • 测试框架TestNG使用介绍

    今天分享TestNG测试框架的基础知识,使用TestNG的优点,TestNG的基本注解如何使用,套件、忽略、异常、...

  • k13–7/15 selenium04 - TestNG

    功能测试的流程: 分析需求 → 排测试计划 → 设计测试用例 → 执行测试用例 TestNG说明 TestNG 最...

  • [TestNG]TestNG整合ReportNG

    TestNG系列:TestNG和Junit4的参数化测试对比TestNG运行指定测试套件TestNG整合Repor...

网友评论

    本文标题:TestNG的测试方法、测试组,异常

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