运行具有属性dependsOnGroupsis的类在运行个人作为TestNG时工作正常,但在使用testng.xml文件运行它们时获得以下错误
我无法弄清楚为什么会出现这个错误,可能是某些依赖需要添加在我可能缺少的testing.xml文件中。任何人的帮助将不胜感激。提前致谢
[TestNG] Running:
C:\Workspace\ZionsWorkspace\Zions_Bancs_Automation\testng.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){
}
}
的testng.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 -->
答案 0 :(得分:0)
虽然我在tests.xml文件中包含了依赖类,但它开始工作,但它们运行的顺序并不是预期的。
贷款批准取决于贷款创建,贷款修订是独立的测试用例
执行顺序是: 创建贷款帐户, 贷款修正案, 日志审批
预计会有 贷款创造, 贷款批准, 贷款修正案我无法理解为什么会这样。任何人都可以解释执行顺序,同时保持测试文件中的类与那些具有dependsongroups属性的类。
<?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 -->
答案 1 :(得分:0)
如果您只担心执行订单,则必须进行2次更改: 1.在testng.xml文件中,您必须添加:
test name="Test" **preserve-order="true"**
这将确保testng.xml文件中提到的测试类的执行顺序。请点击此链接了解更多详情http://www.seleniumeasy.com/testng-tutorials/preserve-order-in-testng
@Test(优先级= 1) public void Test1(){}
@Test(优先级= 2) public void Test2(){}
@Test(优先级= 3) public void Test3(){}
priority
鼓励执行顺序,但不保证先前的优先级已经完成。 test3可以在test2完成之前启动。如果需要保证,则声明依赖。
与声明依赖关系的解决方案不同,即使一个测试失败,也会执行使用优先级的测试。根据{{3}}
,可以使用@Test(... alwaysRun = true ...)处理依赖关系的这个问题