gpt4 book ai didi

java - 如果 @BeforeMethod 失败,TestNG 至 6.10 会忽略套件中的后续类

转载 作者:行者123 更新时间:2023-12-02 02:40:55 25 4
gpt4 key购买 nike

考虑以下TestNG套件:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name = "TestNG Examples" parallel = "false" thread-count = "1">
<test name = "TestNG Examples">
<classes>
<class name = "com.example.A"/>
<class name = "com.example.B"/>
</classes>
</test>
</suite>

由这些类组成:

package com.example;

import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public final class A extends AbstractTest {
@BeforeMethod
public void setUp() {
throw new RuntimeException();
}

@Test
public void test() {
}
}

package com.example;

import org.testng.annotations.Test;

public final class B extends AbstractTest {
@Test
public void test() {
System.out.println("B.test()");
}
}

请注意,B.test()A.test() 之后执行,并且两个类都有一个共同的父类(super class):

package com.example;

import org.testng.annotations.AfterMethod;

public abstract class AbstractTest {
@AfterMethod
public final void tearDown() {
}
}

现在,如果 A 中的 @BeforeMethod Hook 由于某种原因失败(如上例所示),则后续套件类将扩展相同的父类(super class)( AbstractTest)永远不会运行:

TestNG Eclipse plug-in

这是 Eclipse 的屏幕截图,但我在 IntelliJ IDEATeamCity 中也观察到了相同的行为。

为了重现此问题,必须满足以下先决条件:

  • 两个测试应该有一个共同的祖先。
  • 共同祖先应该有一个 @AfterMethod 钩子(Hook)。
  • 正在运行的第一个测试类应该有一个失败的 @BeforeMethod Hook 。

这是预期的行为吗?它在任何地方都有记录吗?

最佳答案

在这里检查alwaysRun http://testng.org/doc/documentation-main.html .

如果我们想要运行方法,即使依赖方法失败,那么使用alwaysRun=true

关于java - 如果 @BeforeMethod 失败,TestNG 至 6.10 会忽略套件中的后续类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45484794/

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