A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不二晨 金牌黑马   /  2019-4-1 09:09  /  1307 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

testNG组测试


  在testNG中组测试是一个新的创新功能,它不存在于Junit框架,它允许调度到适当的部分方法和瓶坯复杂的测试方法分组。您不仅可以声明属于群体的那些方法,但你也可以指定一组包含其他组。然后testNG可调用和要求一组特定的群体(或正则表达式),而排出另外一个集合。这给了你最大的灵活性,如何区分测试,如果想运行两套不同的测试背景,不要求重新编译任何东西。

组指定testng.xml/文件使用<groups>标签。它可以发现无论是根据<test>或<suite>标签。组指定<suite>标签使用于所有的<test>标签下方

创建一个类MessageUtil.java

package hello;

/*
* This class prints the given message on console.
*/
public class MessageUtil {
    private String message;

    // Constructor
    // @param message to be printed
    public MessageUtil(String message) {
            this.message = message;
    }

    // prints the message
    public String printMessage() {
            System.out.println(message);
            return message;
    }

    // add "totorialspoint!" to the message
    public String salutationMessage() {
            message = "Hi!" + message;
            System.out.println(message);
            return message;
    }

    //add "www." to the message
    public String exitMessage(){
            message = "www." + message;
            System.out.println(message);
            return message;
    }
创建测试方案类

创建一个Java测试类为GroupTestExample.java

测试类添加测试方法testPrintMessage()和testSalutation().

组测试方法两个类别为:

检入登记测试(checkintest):提交新的代码之前,你应该运行这些测试。他们通常要快,只要确保没有被打破的基本功能

功能测试(functest):这些测试应该涵盖软件的所有功能,每天至少运行一次,虽然理想情况下,会希望他们不断运行

创建Java类名GroupTestExample.java

package group;

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

public class GroupTestExample {
    String message = ".com";
    MessageUtil messageUtil = new MessageUtil(message);

    @Test(groups = { "functest", "checkintest" })
    public void testPrintMessage() {
        System.out.println("Inside testPrintMessage()");
        message = ".com";
        Assert.assertEquals(message, messageUtil.printMessage());
    }

    @Test(groups = { "checkintest" })
    public void testSalutationMessage() {
        System.out.println("Inside testSalutationMessage()");
        message = "tutorialspoint" + ".com";
        Assert.assertEquals(message, messageUtil.salutationMessage());
    }

    @Test(groups = { "functest" })
    public void testingExitMessage() {
        System.out.println("Inside testExitMessage()");
        message = "www." + "tutorialspoint"+".com";
        Assert.assertEquals(message, messageUtil.exitMessage());
    }
}
创建testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
    <test name="test1">
        <groups>
                    <run>
                                <include name="functest" />
                    </run>
                </groups>
        <classes>
            <class name="group.GroupTestExample" />
        </classes>
    </test>
</suite>
测试结果



我们可以看到testPrintMessage(),testSalutationMessage()和testingExitMessage()只有testPrintMessage(),testingExitMessage()这两个测试函数被运行了。因为没有运行testSalutationMessage()导致第三个运行出来的测试不成功



组中组

组中可以包含其他组。这些组称为MetaGroup。例如你希望定义一个组中的所有,包括checkintest和functest。

修改testng.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
   <test name="test1">
      <groups>
         <define name="all">
            <include name="functest"/>
            <include name="checkintest"/>
         </define>
         <run>
            <include name="all"/>
         </run>
            </groups>
         <classes>
              <class name="group.GroupTestExample" />
        </classes>
   </test>
</suite>
测试结果



排斥组

可以忽略一个组的时候使用<exclude>标签

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
   <test name="test1">
      <groups>
                 <run>
                    <include name="checkintest"/>
                    <exclude name="functest"/>
                 </run>
            </groups>
         <classes>
              <class name="group.GroupTestExample" />
        </classes>
   </test>
</suite>

测试结果


我们可以看到三个测试函数中,只有第二个被测试,其它了两个函数都包含functest,不予测试
---------------------
【转载,仅作分享,侵删】
作者:若海音符
原文:https://blog.csdn.net/Chenyt01/article/details/51752675
版权声明:本文为博主原创文章,转载请附上博文链接!

1 个回复

倒序浏览
奈斯,感谢分享!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马