TestNG入门教程-11-如何通过testng.xml来实现设置依赖关系
2017-11-17 21:38
633 查看
这篇来介绍下依赖关系,前面我们简单介绍了@Test中的dependsOnMethods。这篇,我们主要学习dependOnGroups和如何在testng.xml中设置依赖关系。在Testng中依赖分两种,硬依赖和软依赖。
硬依赖就是所有的依赖方法必须成功执行,才会执行接下来的方法,如果其中有一个依赖的方法失败了,那么接下来的方法是不会被执行,会默认标记跳过(skip)。
举例:
package com.java.learn;
import org.testng.annotations.Test;
/**
* create by Anthony on 2017/11/9
*/
public class TestDependenceDemo {
@Test(dependsOnMethods = "tomcatServiceIsDown")
public void restartTomcatService(){
System.out.println("Restart the tomcat server when it is down!");
}
@Test
public void tomcatServiceIsDown(){
System.out.println("tomcat service is down!");
}
}
上面重启tomcat服务的方法运行的前提是tomcatServiceIsDown(),只有tomcat服务确实挂了,才会执行重启的方法,这个就是硬依赖。
软依赖就是不管依赖的方法是否成功执行,接下来的方法都可以运行。软依赖的实现是在@Test中添加属性alwaysRun=true来实现。
举例
上面依赖关系是tomcat这个group,而且设置了软依赖,最后都执行了startAppServer方法,如果你去除alwaysRun=true,或者true改成false,运行发现,第三个方法是跳过,忽略了没有执行。
来看看如何通过配置testng.xml来控制依赖关系。
单独运行下,看看什么顺序
Restart the tomcat server when it is down!
Shutdown App service
Start App service
tomcat service is down!
看看testng.xml如何配置,让执行group app的用例之前需要执行tomcat group的用例。
运行下这个testng.xml,看看用例执行的顺序。
Restart the tomcat server when it is down!
tomcat service is down!
Shutdown App service
Start App servicer
从这个结果来看,确实实现了执行app group之前先执行tomcat group的用例,由于设置了group 依赖,所以先执行tomcat group的用例,然后执行app group用例。
硬依赖就是所有的依赖方法必须成功执行,才会执行接下来的方法,如果其中有一个依赖的方法失败了,那么接下来的方法是不会被执行,会默认标记跳过(skip)。
举例:
package com.java.learn;
import org.testng.annotations.Test;
/**
* create by Anthony on 2017/11/9
*/
public class TestDependenceDemo {
@Test(dependsOnMethods = "tomcatServiceIsDown")
public void restartTomcatService(){
System.out.println("Restart the tomcat server when it is down!");
}
@Test
public void tomcatServiceIsDown(){
System.out.println("tomcat service is down!");
}
}
上面重启tomcat服务的方法运行的前提是tomcatServiceIsDown(),只有tomcat服务确实挂了,才会执行重启的方法,这个就是硬依赖。
软依赖就是不管依赖的方法是否成功执行,接下来的方法都可以运行。软依赖的实现是在@Test中添加属性alwaysRun=true来实现。
举例
package com.java.learn; import org.testng.Assert; import org.testng.annotations.Test; /** * create by Anthony on 2017/11/9 */ public class TestDependenceDemo { @Test(groups = {"tomcat"}) public void restartTomcatService(){ System.out.println("Restart the tomcat server when it is down!"); } @Test(groups = {"tomcat"}) public void tomcatServiceIsDown(){ System.out.println("tomcat service is down!"); Assert.assertTrue(10==11); } @Test(dependsOnGroups = {"tomcat"}, alwaysRun = true) public void startAppServer(){ System.out.println("Start App service"); } }
上面依赖关系是tomcat这个group,而且设置了软依赖,最后都执行了startAppServer方法,如果你去除alwaysRun=true,或者true改成false,运行发现,第三个方法是跳过,忽略了没有执行。
来看看如何通过配置testng.xml来控制依赖关系。
package com.java.learn; import org.testng.Assert; import org.testng.annotations.Test; /** * create by Anthony on 2017/11/9 */ public class TestDependenceDemo { @Test(groups = {"tomcat"}) public void restartTomcatService(){ System.out.println("Restart the tomcat server when it is down!"); } @Test(groups = {"tomcat"}) public void tomcatServiceIsDown(){ System.out.println("tomcat service is down!"); } @Test(groups = {"app"}) public void startAppServer(){ System.out.println("Start App service"); } @Test(groups = {"app"}) public void shutDownApp(){ System.out.println("Shutdown App service"); } }
单独运行下,看看什么顺序
Restart the tomcat server when it is down!
Shutdown App service
Start App service
tomcat service is down!
看看testng.xml如何配置,让执行group app的用例之前需要执行tomcat group的用例。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Default Suite"> <test name="Testng_learn" > <groups> <dependencies> <group name="app" depends-on="tomcat" /> </dependencies> </groups> <classes> <class name="com.java.learn.TestDependenceDemo"/> </classes> </test> <!-- Java_Learn --> </suite> <!-- Default Suite -->
运行下这个testng.xml,看看用例执行的顺序。
Restart the tomcat server when it is down!
tomcat service is down!
Shutdown App service
Start App servicer
从这个结果来看,确实实现了执行app group之前先执行tomcat group的用例,由于设置了group 依赖,所以先执行tomcat group的用例,然后执行app group用例。
相关文章推荐
- 如何通过代码实现进入到手机的设置页面(比如开启gps设置的页面)
- 轻量级C语言实现的minixml解析库入门教程
- 如何理解java中的依赖注入 通过构造函数和反射机制来实现的
- Python入门教程-11 xml解析(minidom)
- Flex中如何通过给openItems属性设置一个XMLList或Array对象来打开Tree的一个节点的例子
- Flex中如何通过给openItems属性,设置一个XMLList或Array对象来打开Tree的一个节点
- Spring依赖注入的XML配置文件的实现思想(1)——准备工作:如何读取XML的文件的内容
- 通过在xml布局文件中设置android:onClick=""来实现组件单击事件
- SpringMVC入门教程 附jar包依赖关系
- UWP 入门教程2――如何实现自适应用户界面
- UWP 入门教程2——如何实现自适应用户界面
- 通过xml布局文件实现按钮改变焦点设置背景图片
- UWP 入门教程2——如何实现自适应用户界面
- Win7系统如何通过口令操作电脑 设置使用语音操作Win7系统图文教程
- 入门代码教程第二节 如何:实现服务协定
- Android入门进阶教程(11)-远程图片获取和Xml解析
- [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类
- 通过项目依赖设置LIB引用关系
- 原创:如何实现在Excel通过循环语句设置指定行的格式
- 布局xml中的属性设置如何在代码中实现