本文旨在让读者简单了解testng的自动运行

  怎么说呢,在网上已经有了各个前辈进行代码演示以及分享,我力争说到点子上

  接上文,之前讲的大部分是juint的自动化代码运行,从未涉及到testng,但是在测试领域,如果使用java代码,一般都是juint或者testng,总得来说,我都用过,深深的感觉,确实testng比juint功能更加的强大,不过也没有说到了完全望尘莫及的程度,能用juint做的,testng也能做,能用testng做的,用juint也一定能做,只是比较累而已,,,testng的话我确实感觉到是juint的进化版本,就像是一个人多年使用juint并发现其中的问题,然后重新改写源码来做的新的框架,但是,修改之后的testng的问题也在于,由于代码注释和xml等比juint复杂得多,它的入门和使用的门槛,略高于juint,需要对java,ant等有一定了解。

  https://blog.csdn.net/luozhuwang/article/details/14646839 这个博文对junit和testng做出了表面的比较,怎么说呢,说的很在理,但是测开有几个人只会juint和testng呢?其他的过河桥,可以使得两者的差异并不明显。不过我认为,读这样的文章很重要,可以有一个较为粗浅的认识

  如果你看完了之前的博客,就会发现juint并不依赖于java编译,它往往会使用已经编译好的class文件来执行(当然,你也可以使用ant命令使得java文件编译为class),下图是我画的大概框图

  总得来说这样的xml会直接在里面指定执行的东西的位置,再由执行的位置来定位执行的方法等等

  但是我们不禁要想到以下问题

1,如果系统中要求只执行一部分代码,比如执行查询接口,或者只执行插入接口,如何去做

2,如何让每个class,甚至每个方法,按照一定的方式优先级来执行

3,方法的依赖问题,又该如何处理

4,如果需要一个或者多个变量(如cookie),如何在代码中传输,使得今天和明天使得都是能用的不同的参数

5,,,

  以上问题都是在面试中面试人员问过我的,,,我一般都能说出来实现方式junit版本,不过估计不是他们想要的答案,说实话,都能解决,但是都比较的取巧吧,而且费劲

  testng在这些方面都要做的更好,本文逐一演示,下面是testng的大概思路

  testng和juint比较大的区别在于,它相当于又多了一个xml文件来管理,ant的build.xml只需要指定一个路径,然后不需要修改,而执行哪些方法和class,如何执行,完全由testng自身定义的一个xml来规定,在juint中,这一件事情完全由build.xml和配置文件来完成

  首先下载好testng的包,并采用标准的非mvn结构把包放到lib文件夹之下,现在代码里面开一个zlr3的文件,他的目录结构以及运行效果是这样的(读了这么多我的博客,我相信各位一定已经不用再花一个博文的篇幅来介绍这些内容了,直接略过)

  然后我new一个文件,可以叫做testNG.xml,与src同级目录,如图所示

里面写上如下代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="framework_testng">
<test verbose="2" name="TestGroups"> <classes>
<class name="zlr.zlr3" />
</classes>
</test>
</suite>
这个方法是直接运行整个class,其中name要指定要运行的class然后点击执行即可

这里是使用java自身的代码处理的效果,如果读者能做到这个程度,就可以开始尝试进行下一步操作,使用ant来执行
在自己的系统中再创建一个xml,比如叫做build.xml,然后在其中写下如下代码

<?xml version="1.0"?>
<project name="Demo" default="run" basedir=".">
<echo message="Start selenium Grid" />
<echo message="import libs" />
<path id="run.classpath">
<fileset dir="${basedir}">
<include name="lib/*.jar" />
</fileset>
</path>
<taskdef name="testng" classname="org.testng.TestNGAntTask" classpathref="run.classpath" />
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile" depends="clean">
<echo message="mkdir"/>
<mkdir dir="build/classes"/>
<javac srcdir="src" destdir="build/classes" debug="on" encoding="UTF-8">
<classpath refid="run.classpath"/>
</javac>
</target>
<path id="runpath">
<path refid="run.classpath"/>
<pathelement location="build/classes"/>
</path>
<target name="run" depends="compile">
<testng classpathref="runpath" outputDir="test-output"
haltonfailure="true"
useDefaultListeners="false">
<xmlfileset dir="${basedir}" includes="testNG.xml"/>
<jvmarg value="-Dfile.encoding=UTF-8" />
<sysproperty key="org.uncommons.reportng.title" value="AutoMation TestReport" />
</testng>
</target>
</project>

其中,笔者由于build.xml也在该工程下,所以 basedir=".",指的是当前目录
代码中分为clean->compile->run,其中lib/*.jar会把所有的jar都加载,而<xmlfileset dir="${basedir}" includes="testNG.xml"/>这一行需要指明
includes="testNG.xml"这样的参数来直接写出刚刚的xml直接调用,其中的打包啥的都可以修改路径,请自行摸索,下图是执行效果

  可以看到,正确打印出了zlr,而且内容中也正常运行了代码,真的很不错
  总得来说testng的代码,外面这个build.xml是不需要改动的,改动的只是代码中的xml,从这个xml中会指定运行的方法以及代码模块,这样的话代码上只需要对xml和java的代码这方面进行一系列讲解就好,虽然比junit代码更加的复杂一些,不过也还好,让程序员更专注的写xml,比如发邮件等工作会放在外面的xml中,而传参的代码写到里面的xml中,怎么说呢,虽然说得很费劲和绕,不过更加的各司其职,还好啦
  至于如何自动运行ant程序,其实实际上和juint一样,有兴趣的读者可以从https://www.cnblogs.com/xuezhezlr/p/7725301.html这里看一下大概流程本文不做赘述
  其中testng的代码结构又细分为多种,下一篇博客进行详细讲解,主要是说一下xml和一些相关的test文件目录

java testng框架的windows自动化-自动运行testng程序上篇的更多相关文章

  1. java testng框架的windows自动化-自动运行testng程序下篇

    本文旨在让读者简单了解testng的自动运行 接上文https://www.cnblogs.com/xuezhezlr/p/9213456.html,文章大致把testng中比较特殊的两个xml形式说 ...

  2. java juint框架的windows自动化-自动运行juint程序简述

    在京东混了一个月,基本有点稳定了,觉得也有所余力了现在,继续写博客吧,不过以后更新也许不是那么频繁了 本人使用的是juint框架,对开发是一个单元测试的java框架,但是对测试而言是java的基石之一 ...

  3. java的windows自动化-自动运行java程序

    那么在一些工具齐全并且已经有了一定的写好的java程序的情况下(环境变量和软件见上一章http://www.cnblogs.com/xuezhezlr/p/7718273.html),如何自动化运行j ...

  4. Atitit.Java exe bat  作为windows系统服务程序运行

    Atitit.Java exe bat  作为windows系统服务程序运行 1. 使用SC命令+srvany.exe (不错,推荐)+net start1 1.1. First 创建一个java的运 ...

  5. webstorm git 怎么断开版本控制 webstorm git for windows 禁止 自动运行

    也是无语啊,今天装了下最新版本的webstorm ,  发现特别卡,老动不动就卡死, 看了下进程, 牛X 啊,  git for windows 一直蹭蹭蹭的疯狂增长,一开始的一点到后来的庞然大物. ...

  6. NanoPC-T4/RK3399开发板Ubuntu FriendlyCore系统开机自动运行客户程序

    RK3399开机自动运行客户程序 比如hellohello.c 交叉编译:aarch64-linux-gcc hello.c -o hello使用SecureCRT软件通过串口下载到开发板rz修改文件 ...

  7. java的mac自动化-自动运行java程序

    本文旨在帮助读者介绍,如果一个测试工程师拿到了mac本,该如何在本地自动运行java代码 首先如图所示写下如下一段代码 package zlr;import org.junit.Test;public ...

  8. mpush 服务端配置 for windows 服务自动运行

    mpush 服务端配置 以下安装部分是参照官方的步骤, 一.安装jdk1.8并配置环境变量 示例:  http://www.cnblogs.com/endv/p/6439860.html 二.Wind ...

  9. TestNG官方文档中文版(4)-运行TestNG

    4 - 运行TestNG TestNG可以以不同的方式调用: * Command line     * ant     * Eclipse     * IntelliJ's IDEA 1) 命令行 假 ...

随机推荐

  1. Web_0002:关于MongoDB的操作

    1,启动moggdb服务端 打开cmd命令窗口进入到MongoDB的安装目录bin文件下: 如:  cd /d F:\Program Files\mongodb\bin   执行如下命令(该命令窗口为 ...

  2. 使用lombok 注解Java类

    环境信息: IDEA  2016.2.4 Maven 3 JDK 1.8 Maven工程配置: <properties> <lombok.version>1.16.16< ...

  3. 课程设计个人报告——基于ARM实验箱的捕鱼游戏的设计与实现

    课程设计个人报告--基于ARM实验箱的捕鱼游戏的设计与实现 一.个人贡献 参与课设题目讨论及部分过程 资料收集 负责代码调试 捕鱼游戏相应功能的实现 实验环境 Eclipse软件开发环境: ARM实验 ...

  4. Oracle问题整合

    1.安装Oracle和ado.net连接Oracle 在“环境变量”的“系统变量”中[必须添加]: ORACLE_HOME = C:\instantclient_11_2 TNS_ADMIN = C: ...

  5. S2-045漏洞初步分析

    0x01 前言 前几天刚分析完s2-032这个漏洞,今天又爆发了一个s2-045的漏洞,又是直接的命令执行,影响了struts2绝大多数的版本. 官方给的漏洞公告在这里   https://cwiki ...

  6. linux下进入root用户登录

    1.打开终端,输入sudo passwd -u root 输入当前用户的登录密码,提示如下标红区域信息 解决方案: 1)直接输入命令:su,输入当前用户登录密码 2)添加sudoers文件的写权限,命 ...

  7. 【3】学习C++之const关键字的使用

    在C++中,const关键字是控制变量是否可以变化的,是否能够用好const关键字是区别小白和大佬的重要指标(大雾). 1.const与基本数据类型 ; //a是变量,a的值可以在后续操作中进行更改. ...

  8. 双目立体匹配——归一化互相关(NCC)

    归一化相关性,normalization cross-correlation,因此简称NCC,下文中笔者将用NCC来代替这冗长的名称. NCC,顾名思义,就是用于归一化待匹配目标之间的相关程度,注意这 ...

  9. mina statemachine解读(二)

    这里主要讲下对外接口暴露的处理. // 创建对外接口对象 TaskWork taskWork = new StateMachineProxyBuilder().setStateContextLooku ...

  10. 3D Slicer中文教程(七)—图像中值滤波

    1.中值滤波概念 中值滤波是对一个滑动窗口内的诸像素灰度值排序,用其中值代替窗口中心象素的原来灰度值,它是一种非线性的图像平滑法,它对脉冲干扰级椒盐噪声的抑制效果好,在抑制随机噪声的同时能有效保护边缘 ...