使用 testng 运行测试用例时.xml获取错误取决于不存在的组



运行属性dependonGroups的类在以TestNG运行单个时工作正常,但是在使用testng运行它们时.xml文件得到以下错误

我无法弄清楚为什么会出现该错误,可能是一些依赖项需要在测试中添加.xml我可能缺少的文件。任何人的帮助将不胜感激。提前致谢

[TestNG] Running:
C:WorkspaceZionsWorkspaceZions_Bancs_Automationtestng.xml
org.testng.TestNGException: 
DependencyMap::Method "LoanApprovalTest.testLoanApprova(java.util.Hashtable)[pri:0, instance:com.zions.release1.Sanity.LoanTestCases.LoanApprovalTest@3884b2]" depends on nonexistent group "CreateLoanAccountTest.testCreateLoanAccount"
at org.testng.DependencyMap.getMethodsThatBelongTo(DependencyMap.java:46)
at org.testng.TestRunner.createDynamicGraph(TestRunner.java:1074)
at org.testng.TestRunner.privateRun(TestRunner.java:734)
at org.testng.TestRunner.run(TestRunner.java:617)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
at org.testng.TestNG.run(TestNG.java:1057)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:230)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76)

第1类 :

public class CreateLoanAccountTest extends AbstractBaseTestCase{
private CreateLoanAccountProcess createLoanAccountProcess =  null;
@Test(dataProvider="createLoanAccountTest" , dataProviderClass = DataProviderForSanitTest.class , groups={"CreateLoanAccountTest.testCreateLoanAccount"})
public void testCreateLoanAccount(Hashtable<String, String> TestDataTable){

}
}

第2类 :

public class LoanApprovalTest extends AbstractBaseTestCase {
@Test(dataProvider="loanApprovalTest" , dataProviderClass = DataProviderForSanitTest.class , dependsOnGroups={"CreateLoanAccountTest.testCreateLoanAccount"}) 
public void testLoanApprova(Hashtable<String, String> TestDataTable){
}
}

测试.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!-- parallel="methods" To Execute the classess Parallel -->
<suite name="Suite"  >
<test name="Test">
<class name="com.zions.release1.Sanity.LoanTestCases.LoanApprovalTest"/>
<class name="com.zions.release1.Sanity.LoanTestCases.AmendLoanAccountTest"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->

虽然我在测试.xml文件中包含了依赖类,但它开始工作,但是它们的运行顺序不是预期的。

贷款审批取决于贷款创建,贷款修改是独立的测试用例

执行顺序为: 创建贷款账户, 贷款修正 , 日志审批

预计是 贷款创造 , 贷款审批 , 贷款修订

我不明白为什么会这样。任何人都可以解释执行顺序,同时将类保留在测试文件中,这些类具有依赖组属性。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!-- parallel="methods" To Execute the classess Parallel -->
<suite name="Suite"  >
<test name="Test">

<classes>

<class name="com.zions.release1.Sanity.LoanTestCases.CreateLoanAccountTest"/>
<class name="com.zions.release1.Sanity.LoanTestCases.LoanApprovalTest"/>
<class name="com.zions.release1.Sanity.LoanTestCases.AmendLoanAccountTest" />
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->

如果您只担心执行顺序,则必须进行 2 项更改: 1. 在您的测试.xml文件中,您必须添加:

test name="Test" **preserve-order="true"**

这将确保 testng.xml 文件中提到的测试类的执行顺序。点击此链接了解更多详情 http://www.seleniumeasy.com/testng-tutorials/preserve-order-in-testng

  1. 如果你想确保类中的优先级顺序,你必须做如下的事情:

@Test(优先级=1( public void Test1(( {}

@Test(优先级=2( public void Test2(( {}

@Test(优先级=3( public void Test3(( {}

priority鼓励执行顺序,但不保证先前的优先级已完成。 测试3可以在测试2完成之前启动。如果需要保证,则声明依赖项。

与声明依赖项的解决方案不同,即使一个测试失败,使用优先级的测试也会执行。可以使用 @Test(...总是运行 = 真...据 http://testng.org/doc/documentation-main.html#annotations

最新更新