gpt4 book ai didi

java - 为什么@AfterSuit 在没有alwaysRun=true 的情况下不运行?

转载 作者:行者123 更新时间:2023-11-30 05:20:56 25 4
gpt4 key购买 nike

我有以下@AfterSuit方法。如果我删除 alwaysRun=true,TestNG 不会执行它。

@AfterSuite(alwaysRun=true)
public void finishsuit()
{
System.out.println("completed suit");
}

我检查了alwaysRun的文档,它说:

For after methods (afterSuite, afterClass, ...): If set to true, this configuration method will be run even if one or more methods invoked previously failed or was skipped.

这就是我的理解:如果 @Test 中的任何一个在 <test> 中指定的任何类中定义的方法属于当前诉讼失败,则 @AfterSuit除非我们指定alwaysRun=true,否则不会执行.

但就我而言,@Test 都没有。正在失败。仍然是我的@AfterSuite如果没有 alwaysRun=true 则不会执行

最佳答案

您可能正在组中运行测试方法,而 AfterSuite 不属于任何组,这就是您需要 alwaysRun=true 的原因。

但是因为我发现您对alwaysRun 行为有点困惑,所以我将继续解释...

对于 @BeforeXXXX 方法,如果您想要运行该方法(尽管该方法不属于您正在运行的组),则需要分配alwaysRun。例如。

public class TestConfig {

@BeforeSuite
public void beforeSuite() {
doSomething();
}

}

public class TestClassA extends TestConfig {

@Test(groups = { "groupA" })
public void testA() {
doTest();
}

}

在这种情况下,如果我们运行组“groupA”,则 @BeforeSuite 方法不是我们正在执行的组的一部分,除非我们指定alwaysRun = true

这同样适用于 @AfterXXXX 方法,此外,如果您想运行它们,尽管它们的 @Before 对应项已失败或有任何依赖方法,则它们需要 alwaysRun=true。例如:

public class TestClassA {

@BeforeSuite( groups = { "testA" })
public void beforeSuite() {
doSomethingBefore();
throw new RuntimeException();
}

@Test( groups = { "testA" })
public void testA() {
doTest();
}

@AfterSuite( groups = { "testA" })
public void afterSuite() {
doSomethingAfter();
}

}

现在,@AfterSuite 方法将不会运行,因为它的对应 @BeforeSuite 方法已失败。如果 @AfterSuite 位于 @BeforeClass 失败的类上,同样适用。但如果我们添加 alwaysRun=true testng 将忽略之前的任何失败并继续进行。

这些都不适用于@TEST方法。 @BeforeXXXX 和 @AfterXXXX 方法将忽略任何 @Test 结果运行,除非您指定 test dependency .

最后,@Test方法中的alwaysRun的行为方式与ignoreMissingDependency=true类似。例如:

@Test
public void testA() {
doTestA();
}

@Test(dependsOnMethods = { testA }))
public void testB() {
doTestB();
}

同样,在这种情况下,testB 将不会运行,因为它依赖于@TestA,除非我们分配alwaysRun=true(或ignoreMissingDependency=true)。

关于java - 为什么@AfterSuit 在没有alwaysRun=true 的情况下不运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59574868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com