前面我们都在IDEA上右键testng.xml文件来运行testng用例,这个在编写测试用例过程是 可以这么做,但是,如果测试用例写完了,也是这么做吗?有没有什么方法,例如自动化去实现。测试脚本维护后期,我们都会考虑持续集成测试,那么如何把运行测试用例实现自动化呢?网上搜索,很多都是testng在cmd中输入命令行,但是这个是有缺陷的,第一需要javac命令去编译你的测试用例,然后才能用这个命令,如果用例很多,你怎么实现在cmd进行批量编译呢?这篇,我们就是来解决这个问题,不用关心TestNG环境变量和编译的事情,为将来的持续集成做好准备。

准备一个TestNG用例

package demo2;

import org.testng.Assert;
import org.testng.annotations.Test; /**
* create by Anthony on 2017/11/18
*/
public class ReRunFailedTestCaseDemo { @Test
public void test01(){
System.out.println("test01");
} @Test(dependsOnMethods = "test03", alwaysRun = true)
public void test02(){
System.out.println("test02");
} @Test
public void test03(){
Assert.assertTrue(==);
System.out.println("test03");
} @Test(dependsOnMethods = "test05", alwaysRun = true)
public void test04(){
System.out.println("test04");
} @Test
public void test05(){
Assert.assertTrue(==);
System.out.println("test05");
} }

注意上面我特意写了两个运行会失败的用例,为下面的失败重跑做准备。下面我们在项目根目录下testng.xml内容如下。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPEsuiteSYSTEM"http://testng.org/testng-1.0.dtd">
<suite name="Default Suite"> <test name="Testng_learn" > <classes>
<class name="demo2.ReRunFailedTestCaseDemo"/>
</classes> </test>
</suite>

1.  如何在IDEA工具显示testng运行后的报告输出

在IDEA这个工具上,运行完一个testng用例或者testng.xml文件默认在当前项目是没有任何testng的报告输出,这个在eclipse是默认自动打开,所以,我们先要学习下IDEA如何打开这个。

选择一个TestNG用例文件右键,然后点击Run-Edit Configuration…

运行步骤1中的testng.xml,你会发现当前项目根目录下会生成test-output文件夹

这个文件夹下有我们上一次运行的html格式报告,还有跑失败的用例的xml文件,本文重点是testng-failed.xml文件。找到这个文件,看看是不是步骤1中我设置的两个运行失败的用例。

在TestNG中会自动记录你上一次运行情况,在test-output下会生成html格式报告,和把失败的用例都放在testng-failed.xml,这个功能很强大。由于有了这个,我们就想,可不可以实现失败用例从新跑呢。我们手动执行testng-failed.xml当然可以去实现失败用例重新跑的需求,所以,我们重点在如何实现自动化手段去失败重新跑。把这个问题再细化,就是如何用Java代码是加载执行testng.xml文件。

2. 准备一个TestNG用例Java编程去实现运行相关testng.xml文件

这里,我们来解决如何利用Java代码来实现运行我们想要的testng.xml文件。在testng官网教程上解释了如何java代码运行用例,但是没有介绍如何运行testng.xml。我们,写一个java类文件,第一个先执行项目根目录下的testng.xml文件,然后等执行结束,然后去执行test-output文件下testng-failed.xml文件,这样就达到了自动运行失败的用例的需求。

    package demo2;

    import org.testng.TestNG;
import java.util.ArrayList;
import java.util.List; /**
* create by Anthony on 2017/11/18
*/
public class RunTestNG { public static void main(String[] args) throws InterruptedException { TestNG testNG = new TestNG();
List<String> suites = new ArrayList<String>();
suites.add(".\\testng.xml");
//suites.add(".\\test-output\\testng-failed.xml");
testNG.setTestSuites(suites);
testNG.run(); // 等待执行结束,然后去执行失败用例
TestNG testNG1 = new TestNG();
List<String> suites1 = new ArrayList<String>();
Thread.sleep();
suites1.add(".\\test-output\\testng-failed.xml");
testNG1.setTestSuites(suites1);
testNG1.run(); }
}

看控制台运行结果:

[TestNG] Running:

C:\Users\Administrator\IdeaProjects\Java_Learn\testng.xml

test01

test02

test04

===============================================

Default Suite

Total tests run: 5, Failures: 2, Skips: 0

===============================================

[TestNG] Running:

C:\Users\Administrator\IdeaProjects\Java_Learn\test-output\testng-failed.xml

===============================================

Failed suite [Default Suite]

Total tests run: 2, Failures: 2, Skips: 0

===============================================

Process finished with exit code 0

看控制台日志,显示先运行了testng.xml,然后在运行testng-failed.xml,所以,达到了我想要的目的。以上,重点是如何Java代码是实现testng.xml文件的运行用例,至于失败重跑,上面是我个人的方法,网上还有一种方法,是修改Testng监听类然后写一个重跑的方法来实现,我个人认为没有这个必要,如果后面我们介绍了监听,然后在来看看这第二个方法的实现过程,到时候我们再和这么内容对比,然后选择你认为适合你项目的失败重跑方案。

提示:知道了如何运行一个testng.xml文件,那么就知道如何运行几百条测试用例。举例,我们有一个webui自动化项目,有几百条测试用例。一般我们都一个模块用一个testng.xml文件来进行管理或者一个testng.xml文件管理多个模块或者全量测试用例。然后写一个main方法,然执行测试的人员选择不同模块的代号,通过case语句,我们就可以实现去调用执行不同模块下的testng.xml文件,这个过程完全可以放到Jenkins上做或者cmd命令行。写过很多脚本的人,应该明白我的思路,有不明白的也没关系,慢慢去学习,去积累。

原文链接:https://blog.csdn.net/u011541946/article/details/78597258

TestNG入门教程-12-Java代码执行testng.xml和失败后重跑的更多相关文章

  1. testng入门教程12 TestNG执行多线程测试

    testng入门教程 TestNG执行多线程测试 testng入门教程 TestNG执行多线程测试 并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者 ...

  2. TestNG 入门教程【转】

    TestNG 入门教程[转] 国庆7天假期,大部分朋友都出去旅游了,微信圈里全是晒旅游的照片, 东南亚游,欧洲游呀,真是羡慕呀. 悲惨的我只去了上海野生动物园, 在家休息,利用这段假期,把之前学过的东 ...

  3. testng入门教程16数据驱动(把数据写在xml)

    testng入门教程16数据驱动(把数据写在xml) testng入门教程16数据驱动(把数据写在xml)把数据写在xml文件里面,在xml文件右键选择runas---testng执行 下面是case ...

  4. 如何解决testng执行用例失败自动重跑问题

    注: 以下内容引自 http://blog.csdn.net/MenofGod/article/details/72846649 看过几个相关问题的帖子,内容类似,不过这篇解决问题的步骤和代码比较清晰 ...

  5. 第一章 Java代码执行流程

    说明:本文主要参考自<分布式Java应用:基础与实践> 1.Java代码执行流程 第一步:*.java-->*.class(编译期) 第二步:从*.class文件将其中的内容加载到内 ...

  6. 【Hadoop离线基础总结】通过Java代码执行Shell命令

    通过Java代码执行Shell命令 需求 在实际工作中,总会有些时候需要我们通过java代码通过远程连接去linux服务器上面执行一些shell命令,包括一些集群的状态管理,执行任务,集群的可视化界面 ...

  7. Java 代码执行流程

    Java 代码执行流程 类加载过程 加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 -> 卸载 类加载时机:代码使用到这个类时 验证阶段 &qu ...

  8. 远程代码执行MS08-067漏洞复现失败过程

    远程代码执行MS08-067漏洞复现失败过程 漏洞描述: 如果用户在受影响的系统上收到特制的 RPC 请求,则该漏洞可能允许远程执行代码. 在微软服务器系统上,攻击者可能未经身份验证即可利用此漏洞运行 ...

  9. testng入门教程2用TestNG编写测试及执行测试

    编写TestNG测试基本上包括以下步骤: 测试和编写业务逻辑,在代码中插入TestNG的注解.. 添加一个testng.xml文件或build.xml中在测试信息(例如类名,您想要运行的组,等..) ...

随机推荐

  1. 3年Java开发10面阿里、京东、拼多多

    拼多多 地点:2号线娄山关路地铁站(金虹桥国际中心) 环境:新的写字楼,环境很好,有种高大上的感觉.大厅进入后需要登记,然后进闸机.电梯是需要刷卡才能使用的.会议室都是用城市名称命名,例如杭州.香港等 ...

  2. c#截取后台窗口的图片

    c#截取后台窗口的图片,自测可用,据说性能很一般,用用吧 struct RECT { public int Left; // x position of upper-left corner publi ...

  3. springcloud-微服务架构基础

    一 前言 学习微服务要从基础的架构学起,首先你要有个微服务的概念才能学习对吧!!如果你都不知道啥是微服务,就一头扎进去学习,你自己也觉得自己也学不会对吧.本篇文章主要让大家快速了解基础的架构分格,以便 ...

  4. C# yield关键字

    关于yield关键字,网上有很多文章介绍了,但是看了之后,虽然明白了"哦,原来是这么回事",但是在日常开发中并没有真正的用起来,所以,写此一篇,介绍一下在真正的项目中怎么使用这个关 ...

  5. maven 利用 profile 进行多环境配置

    我们在进行项目的多环境配置时,有很多种方式供我们选择,比如 SpringBoot 自带的 application-dev.yml.maven 的 profile 等.这里介绍的就是如何利用 profi ...

  6. 如何正确使用 Spring Cloud?【上】

    如何更快地交付软件,每周.每天甚至每个小时向用户发布新特性?如何让新员工在入职后就能部署代码?在如此快的节奏下如何保证质量?快,我们应用开发面临的主要挑战,交付越快就越能紧密地收集到用户反馈,从而更有 ...

  7. github pages 子域名 ( subdomain ) https 认证

    目录 说明 github pages 上的创建子域名 https 认证 说明 转载请注明出处https://www.cnblogs.com/bllovetx/p/12013462.html 欢迎访问我 ...

  8. mariadb 学习笔记

    安装:yum install mariadb-server mariadb vim /etc/my.cnf.d/server.cnfinnodb_file_per_table = on#设置后当创建数 ...

  9. 什么是spring框架?spring特点与好处,使用spring框架的好处是什么?

    转载:https://blog.csdn.net/hht006158/article/details/80181207. Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Ja ...

  10. Java 包(package)的概念及实例

    包的作用 1.把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2.如同文件夹一样,包也采用了树形目录的存储方式.同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调 ...