运行属性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
- 如果你想确保类中的优先级顺序,你必须做如下的事情:
@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