zoukankan      html  css  js  c++  java
  • TestNg JAVA 自动化单元测试框架Demo

    1. TestNg
      TestNg 是java的一个自动化单元测试框架
      参考:http://testng.org/doc/index.html

    2. 环境准备
      既然是java 的自动化单元测试框架,就必须要有java的环境了,这里使用的编辑器是Eclipse,已经安装过TestNg 插件,如果环境准备好就可以开始了

    3. 代码实例
      代码结构如图
      这里写图片描述

      新建一个java项目,之后添加一个TestNg类,之后会生成一个测试类,和一个xml文件
      (如果发现TestNg编辑是出错,无法调用TestNg的标签函数,那么导入TestNg.jar.可以右键点击项目,之后BuildPath ->add Libary->选择TestNg 即可)
      这里写图片描述



      简单地TestNg类

      package TestNgDemo;
      //使用TestNg 测试框架
      
      import org.testng.Assert;
      import org.testng.annotations.Test;
      import org.testng.annotations.BeforeClass;
      import org.testng.annotations.AfterClass;
      
      
      public class NewTest {
      
        //测试开始前执行一次
        @BeforeClass
        public void beforeClass() {
            System.out.println("开始前执行一次");
        }
      
        @Test
        public void case1() {
            System.out.println("case1");
        }
      
        @Test
        public void case2() {
            int a = 2;
            int b = 3;
            int sum = a+b;
            Assert.assertEquals(sum, 5, "Result Error");
            System.out.println("case2");
        }
      
        //测试结束时执行一次
        @AfterClass
        public void afterClass() {
            System.out.println("结束时执行一次");
        }
      
      }
      

      对应的Xml配置文件(TestNg 都是通过注释标签,有点类似Junit,并且通过xml文件托管):

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
      <suite name="Suite" parallel="false">
        <test name="Test">
          <classes>
            <class name="TestNgDemo.NewTest"/>
          </classes>
        </test> <!-- Test -->
      </suite> <!-- Suite -->
      



      使用TestNg Xml 进行数据驱动传递参数

      package TestNgDemo;
      //使用TestNg 传递参数
      
      
      import org.testng.annotations.Parameters;
      import org.testng.annotations.Test;
      import org.testng.annotations.BeforeMethod;
      import org.testng.annotations.AfterMethod;
      
      public class NewTest2 {
      
          @BeforeMethod
          public void beforeMethod() {
              System.out.println("每个方法运行时运行");
          }
      
          //通过Parameters 获取Xml 中指定的参数
          @Parameters({"name","age"})
          @Test
          public void case1(String name,int age) {
      
              System.out.println("case1 Name is"+ name);
              System.out.println("case1 Age is"+ age);
      
          }
      
      
          @Test
          public void case2() {
      
              System.out.println("case2");
          }
      
      
      
          @AfterMethod
          public void afterMethod() {
              System.out.println("每个方法结束时运行");
          }
      
      }
      

      对应的xml如下:

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
      <suite name="Suite" parallel="false">
      
          <parameter name="name" value="TestName" />
          <parameter name="age" value="55" />
      
        <test name="Test">
          <classes>
            <class name="TestNgDemo.NewTest2"/>
          </classes>
        </test> <!-- Test -->
      </suite> <!-- Suite -->



      通过xml设置分组,运行不同的case

      package TestNgDemo;
      //TestNg  分组运行
      
      import org.testng.annotations.AfterMethod;
      import org.testng.annotations.BeforeMethod;
      import org.testng.annotations.Parameters;
      import org.testng.annotations.Test;
      import org.testng.annotations.BeforeClass;
      import org.testng.annotations.AfterClass;
      
      public class NewTest3 {
      
          @BeforeMethod
          public void beforeMethod() {
              System.out.println("Begain");
          }
      
          @Parameters({"name","age"})
          @Test(groups="CaseGroup1")
          public void case1(String name,int age) {
      
              System.out.println("case1 Name is"+ name);
              System.out.println("case1 Age is"+ age);
      
          }
      
      
          @Test(groups="CaseGroup2")
          public void case2() {
      
              System.out.println("case2");
          }
      
      
      
          @AfterMethod
          public void afterMethod() {
              System.out.println("End");
          }
      
      }
      

      对应的xml文件如下,需要运行那个组的时候,就可以直接更改:

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
      <suite name="Suite" parallel="false">
      
          <parameter name="name" value="TestName" />
          <parameter name="age" value="55" />
      
      
        <test name="Test">
      
      
        <grroup>
          <define name = CaseGroup1/>
          <define name = CaseGRoup2/>
      
          <run>
              <include name = CaseGroup1/>
          </run>
      
        </grroup>
          <classes>
            <class name="TestNgDemo.NewTest3"/>
          </classes>
        </test> <!-- Test -->
      </suite> <!-- Suite -->
      

    4. TestNg 是通过Xml文件管理测试累的,可以看到,每个测试方法都可以看做一条Case,并且开头都有@Test 作为测试标记
      更多的TestNg xml管理的例子可以参考:
      http://www.cnblogs.com/choosewang/articles/3079983.html
      TestNg 主要的就是通过Xml 托管,注释标签调用

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    如何用机器学习强化市场营销活动。
    大数据统计脚本, 分城市订单统计
    宇宙常量与增长黑客。
    病毒传播效果的衡量公式
    浅谈对增长黑客的理解
    大数据分析, 数据挖掘, 机器学习,找到产品改进的爆点。
    R语言的日期运算
    安装语言包-英文(美国)
    selenium page objects
    logging模块
  • 原文地址:https://www.cnblogs.com/xinleishare/p/4793559.html
Copyright © 2011-2022 走看看