以下是代码:
public class Class2 {
@Test()
public void a() {
System.out.println("a");
}
@Test(dependsOnMethods= {"d"})
public void b() {
System.out.println("b");
}
@Test
public void c() {
System.out.println("c");
}
@Test
public void d() {
System.out.println("d");
}
@Test
public void e() {
System.out.println("e");
}
}
输出为:
c
d
e
a
b
a)为什么执行顺序如此?b)为什么即使我没有为其指定任何dependsOn参数,也要在e()之后执行a()?
理想情况下,它将按照a,c,d,b,e的顺序执行。有人可以解释其背后的逻辑吗?
与JUnit一样,TestNG在默认执行中遵循几乎随机执行的顺序(至少是不可预测的),从而使每个测试彼此独立。
TestNG引入了测试依赖关系和测试优先级(JUnit5中也引入了第二个)。这样,您可以设置自己的订单。
依赖关系将确保在依赖的方法之前没有依赖于另一个方法的方法运行(即,它将确保“ b”在“ d”之前运行)并且仅依赖于该方法。其余的将遵循我上面描述的相同概念。
优先级将为您的测试提供ALMOST实际顺序,并指定您要首先运行的顺序。为什么是“差不多”?原因是,如果测试B的优先级为1,而测试D的优先级为2,则D仍将首先运行,因为B对其具有依赖性,否则它将失败。
我希望这能回答您的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句