本文旨在让读者简单了解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. 深入理解Java设计模式之观察者模式

    前言 观察者,即时observer,总结来说就是一个当一个被观察的对象的状态发生变化时,会通知相应的观察者对象.   观察者模式定义了四种角色:抽象主题.具体主题.抽象观察者.具体观察者 1.抽象主题 ...

  2. unix域数据报回射程序(不完整)

    一.服务器程序 int main(int argc, char **argv) { int sockfd; struct sockaddr_un servaddr, cliaddr; sockfd = ...

  3. SVN的安装与使用教程

    转载:http://www.cnblogs.com/armyfai/p/3985660.html SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需 ...

  4. Java虚拟机运行时内存区域简析

    figure:first-child { margin-top: -20px; } #write ol, #write ul { position: relative; } img { max-wid ...

  5. neo4j语法

    图数据库在社交网络.实时推荐.征信系统.人工智能等领域有广泛应用. 集群特征:主从复制,重选主服务器和容错:每个实例都有自己的本地缓冲 性能优势:查询内不跨网络:实时操作,具有快速和一致的响应时间:缓 ...

  6. UOJ #310「UNR #2」黎明前的巧克力

    神仙题啊... UOJ #310 题意 将原集合划分成$ A,B,C$三部分,要求满足$ A,B$不全为空且$ A$的异或和等于$ B$的异或和 求方案数 集合大小 $n\leq 10^6$ 值域$v ...

  7. day 25-1 接口类、抽象类、多态

    # 接口类:python 原生不支持# 抽象类:python 原生支持的 接口类 首先我们来看一个支付接口的简单例子 from abc import abstractmethod,ABCMeta #我 ...

  8. cout,cerr和clog的区别

    官方解释: cout——Standard output stream Object of class ostream that represents the standard output strea ...

  9. Mvc Swagger报错的解决办法。

    报错信息:Not supported by Swagger 2.0: Multiple operations with path ‘xxxx.aspx’ and method 'POST' 解决办法出 ...

  10. mac 安装和使用MongoDB

    安装 尝试一:手动命令安装尝试二:采用Homebrew尝试三:下载安装包使用安装尝试一:手动命令安装按照官网https://docs.mongodb.com/manual/tutorial/insta ...