当 @BeforeTest 方法失败时,为啥它没有在 testng-failed.xml 中列出?
Posted
技术标签:
【中文标题】当 @BeforeTest 方法失败时,为啥它没有在 testng-failed.xml 中列出?【英文标题】:When a @BeforeTest method fails, why is it not being listed in the testng-failed.xml?当 @BeforeTest 方法失败时,为什么它没有在 testng-failed.xml 中列出? 【发布时间】:2021-09-18 09:11:25 【问题描述】:我正在使用带有 testng 6.14.3 的 maven。
这是我的代码结构:
testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<suite name="set-3" parallel="tests" thread-count="10">
<listeners>
<listener class-name="org.uncommons.reportng.htmlReporter" />
</listeners>
<test name="Customer Tests">
<groups>
<run>
<include name="abc"/>
</run>
</groups>
<classes>
<class name="apps.Test1_BeforeTest_Of_Test2"></class>
<class name="apps.Test2"></class>
</classes>
</test>
</suite>
Test1_BeforeTest_Of_Test2.java
public class Test1_BeforeTest_Of_Test2
@BeforeTest(groups = "abc")
public void test1Method() throws Exception
@AfterTest(groups="abc")
public void test1AfterMethod() throws Exception
Test2.java
public class Test2
@Test(groups = "abc")
public void test2Method()
在我的跑步过程中,Test1_BeforeTest_Of_Test2
课程失败了。因此,Test2
被标记为已跳过。
但是,当我查看运行结束时生成的testng-failed.xml
时,失败的@BeforeTest 类(Test1_BeforeTest_Of_Test2
)不包括/列出:
testng-failed.xml
<?xml version="1.0" encoding="UTF-8"?>
<suite thread-count="10" name="Failed suite [set-3]" parallel="tests">
<listeners>
<listener class-name="org.uncommons.reportng.HTMLReporter"/>
</listeners>
<test name="Customer Tests(failed)">
<groups>
<run>
<include name="abc"/>
</run>
</groups>
<classes>
<class name="apps.Test2">
<methods>
<include name="test2Method"/>
</methods>
</class>
</classes>
</test>
</suite>
这是预期的行为吗?还是 testng-failed.xml 中的错误/差距?
理想情况下,当我们重新运行失败的测试时,我们希望 @BeforeTest 也能运行,因为它是测试 2 的先决条件。
【问题讨论】:
【参考方案1】:TestNG 目前似乎正在考虑在testng-failed.xml
中考虑的配置,如果它是跳过的测试方法的测试类的一部分,即配置(这可能是导致测试被跳过的原因)需要驻留在与您跳过的 TestNG 方法相同的 java 类以将其视为包含在内。
在您的示例中,情况并非如此,配置方法存在于不同的测试类中(这是完全有效的)。
这在我看来像是 TestNG 中的一个错误。
我已代表您提交了 TestNG 项目的错误,并将在即将发布的版本中修复它 (7.5.0
)。
缺陷:https://github.com/cbeust/testng/issues/2611
【讨论】:
以上是关于当 @BeforeTest 方法失败时,为啥它没有在 testng-failed.xml 中列出?的主要内容,如果未能解决你的问题,请参考以下文章
java - 当没有接受long的方法时,为啥java将long参数提升为float/double?
为啥 MailKit SmtpClient.Send() 失败时我没有收到异常?
TestNG中BeforeClass和BeforeTest的区别
套接字:为啥阻塞 read() 会因 ENOTCONN 而失败?