我使用的是maven和testng 6.14.3。
下面是我的代码结构:
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中的bug/gap?
理想情况下,当我们重新运行失败的测试时,我们希望@pre也会运行,因为它是Test 2的pre。
发布于 2021-07-08 05:06:42
TestNG目前似乎在遵守在testng-failed.xml中要考虑的配置,如果它在跳过的测试方法的测试类中的部分--即配置(这可能是导致测试被跳过的原因)--需要驻留在与您跳过的方法相同的java类中,以便TestNG考虑将其包括在内。
在您的示例中,情况并非如此,配置方法存在于不同的测试类中(这是完全有效的)。
在我看来,这就像是TestNG中的一个bug。
我已经代表您在TestNG项目上提交了一个bug,并将在即将发布的版本(7.5.0)中修复它。
https://stackoverflow.com/questions/68292525
复制相似问题