Testng提供了两种依赖实现
1.强制依赖:某个测试用例之前需要执行的依赖链中如果有一个失败,那么接下来所有的测试都不会被执行
2.顺序依赖(软依赖):顺序依赖的用处更多是用来检测一个测试链是否按照正确的顺序执行, 即使其中某个用例执行失败,但是也不会影响整个测试链的执行dependsOnMethods
(如果依赖的方法存在多个重载方法,那么所有的重载方法都将会被执行,如果只想执行一个方法,那么请使用dependsOnGroups)
一、简单依赖,看如下例子
package com.test; import org.testng.Assert; import org.testng.annotations.Test; /** * testng依赖测试 * @author linchaojiang * 创建时间:2016-08-26 * 更新时间:2016-08-26 * */ public class TestNGDependsTest { @Test public void test001(){ System.out.println("简单依赖"); Assert.assertTrue(true); } @Test public void test002(){ System.out.println("简单依赖"); Assert.assertTrue(false); } @Test(dependsOnMethods = { "test001" }) public void test003(){ System.out.println("测试执行依赖test001,test001执行成功,此test执行"); } @Test(dependsOnMethods = { "test002" }) public void test004(){ System.out.println("测试执行依赖test002,test002执行失败,此test不执行"); } }
运行结果:
简单依赖
简单依赖
测试执行依赖test001,test001执行成功,此test执行
PASSED: test001
PASSED: test003
FAILED: test002
Default suite
Total tests run: 4, Failures: 1, Skips: 1
其中test004被跳过不执行
二、默认强制依赖,看如下例子:
import org.testng.annotations.Test; /** * testng依赖测试 * @author linchaojiang * 创建时间:2016-08-26 * 更新时间:2016-08-26 * */ public class TestNGDependsTest { @Test(groups = { "init" }) public void test001() { System.out.println("正常执行"); } @Test(groups = { "init2" }) public void test002() { throw new RuntimeException("抛出异常"); } @Test(dependsOnGroups = { "init.*" }) public void method1() { System.err.println("是否执行"); } }
运行结果:
正常执行
PASSED: test001
FAILED: test002
Default suite
Total tests run: 3, Failures: 1, Skips: 1
从运行结果来看,test003被跳过了
如果依赖的方法发生异常而不能正确的执行时,默认情况下,接下来的方法将不会被执行(强制依赖,默认) 如果在方法体的注解上设置了alwaysRun = true,那么此时在依赖链中的任何一个方法出现异常都不会影响其它方法的执行
看如下例子:
import org.testng.annotations.Test; /** * testng依赖测试 * @author linchaojiang * 创建时间:2016-08-26 * 更新时间:2016-08-26 * */ public class TestNGDependsTest { @Test(groups = { "init" }) public void test001() { System.out.println("执行test002"); } @Test(groups = { "init2" }) public void test002() { System.out.println("执行test002"); throw new RuntimeException("抛出异常"); } @Test(dependsOnGroups = { "init.*" }, alwaysRun = true) public void method1() { System.err.println("执行method1"); }
执行结果如下:
===============================================
Default test
Tests run: 3, Failures: 1, Skips: 0