为什么在TestNG中这个测试的执行顺序是这样的?
Why is the order of execution of this test like this in TestNG?
代码如下:
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) 为什么 a() 在 e() 之后执行,即使我没有为它指定任何 dependsOn 参数?
理想情况下会按照a,c,d,b,e的顺序执行。有人可以解释一下这背后的逻辑吗?
与 JUnit 相同,TestNG 在其默认执行中遵循几乎随机的顺序执行(至少不可预测),使每个测试彼此独立。
TestNG 引入了测试依赖关系和测试优先级(第二个也在 JUnit5 中引入)。有了这个,您可以设置自己的订单。
Dependencies 将确保在该方法之前没有依赖于另一个 运行s 的方法(即它将确保 'b' 运行s在 'd') 之前,仅此而已。其余的将遵循我上面描述的相同概念。
Priorities 会给你的测试一个几乎实际的顺序,指定你想先 运行 哪个。为什么 'almost'?因为如果测试 B 的优先级为 1 而测试 D 的优先级为 2,D 仍将 运行 首先,因为 B 对它有依赖性,否则将失败。
我希望这能回答你的问题。
TestNG - 'dependsOnMethods' 执行将像不依赖于其他方法的@Test 方法一样首先执行。
然后最后执行依赖于其他方法的@Test方法。
package com.test.testngexp;
import org.testng.annotations.Test;
public class TestNGTest50
{
@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");
}
}
OUTPUT:
-------
[RemoteTestNG] detected TestNG version 7.0.0
c
d
e
a
b
TestNG - @Test 依赖项仅适用于属于相同 class 或任何继承的 classes 但不适用于不同 classes 的其他测试。
代码如下:
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) 为什么 a() 在 e() 之后执行,即使我没有为它指定任何 dependsOn 参数?
理想情况下会按照a,c,d,b,e的顺序执行。有人可以解释一下这背后的逻辑吗?
与 JUnit 相同,TestNG 在其默认执行中遵循几乎随机的顺序执行(至少不可预测),使每个测试彼此独立。
TestNG 引入了测试依赖关系和测试优先级(第二个也在 JUnit5 中引入)。有了这个,您可以设置自己的订单。
Dependencies 将确保在该方法之前没有依赖于另一个 运行s 的方法(即它将确保 'b' 运行s在 'd') 之前,仅此而已。其余的将遵循我上面描述的相同概念。
Priorities 会给你的测试一个几乎实际的顺序,指定你想先 运行 哪个。为什么 'almost'?因为如果测试 B 的优先级为 1 而测试 D 的优先级为 2,D 仍将 运行 首先,因为 B 对它有依赖性,否则将失败。
我希望这能回答你的问题。
TestNG - 'dependsOnMethods' 执行将像不依赖于其他方法的@Test 方法一样首先执行。 然后最后执行依赖于其他方法的@Test方法。
package com.test.testngexp;
import org.testng.annotations.Test;
public class TestNGTest50
{
@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");
}
}
OUTPUT:
-------
[RemoteTestNG] detected TestNG version 7.0.0
c
d
e
a
b
TestNG - @Test 依赖项仅适用于属于相同 class 或任何继承的 classes 但不适用于不同 classes 的其他测试。