如何解决DependOnMehtods订单执行不起作用
我正在testng中执行以下测试,并使用dependsOnMehtods,我从此thread所了解的是-
执行所有独立的方法(不带@dependsOnMethods的方法 注释)
但是在我的情况下-为什么Test1不首先执行,因为它没有DependsOnMethods
@Test
public void Test1() {
System.out.println("Test1 Executed");
}
@Test(dependsOnMethods = "Test3")
public void Test2() {
System.out.println("Test2 Executed");
}
@Test
public void Test3() {
System.out.println("Test3 Executed");
}
@Test
public void Test4() {
System.out.println("Test4 Executed");
}
我得到的订单是-
Test3 Executed
Test1 Executed
Test4 Executed
Test2 Executed
解决方法
您可以通过在testng.xml中添加订单来保持订单
<suite>
<test name="TEST_NAME">
<classes>
<class name="com.test.TEST_CLASS_NAME" >
<methods>
<include name="Test1"></include>
<include name="Test2"></include>
<include name="Test3"></include>
<include name="Test4"></include>
</methods>
</class>
</classes>
</test>
</suite>
如果这不能满足您的要求,则可以创建一个监听器事件,这里是一个不错的explanation
,所有testNG测试的默认优先级均为0
如果您未设置优先级,则具有批注dependsOnMethods的测试方法将优先,但是如果您想控制顺序,则批注优先级将起作用。
关于注释优先级: 如果您导航到testNG的优先级声明/定义(在您的IDE中为Ctrl + Ctrl的“左键单击”),您将在org.testng.annotations.Test接口中找到以下内容:
/**
* The scheduling priority. Lower priorities will be scheduled first.
*/
int priority() default 0;
因此,如果您要使用注释优先级并通过注释对测试进行排序,请记住数字越小优先级越高。
在您的情况下,它看起来像这样:
@Test(priority = -4)
public void Test1() {
System.out.println("Test1 Executed");
}
@Test(priority = -3,dependsOnMethods = "Test3")
public void Test2() {
System.out.println("Test2 Executed");
}
@Test(priority = -2)
public void Test3() {
System.out.println("Test3 Executed");
}
@Test(priority = -1)
public void Test4() {
System.out.println("Test4 Executed");
}
您将获得以下顺序,并请注意,由于注释取决于方法,Test3早于Test2:
Test1 Executed
Test3 Executed
Test2 Executed
Test4 Executed
请注意,还有许多其他方法可以解决优先级问题。在这里,我们演示默认优先级的影响。如果负值感觉不直观,则可以使用包含负值的常量等传递自己的值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。