0

我正在使用带有 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 的先决条件。

4

1 回答 1

1

TestNG 目前似乎正在考虑在testng-failed.xml跳过的测试方法的测试类的部分是否考虑配置,即配置(这可能是导致测试被跳过的原因)需要驻留在与您跳过的相同的 java 类中TestNG 考虑将其包含在内的方法。

在您的示例中,情况并非如此,并且配置方法存在于不同的测试类中(这是完全有效的)。

对我来说,这看起来像是 TestNG 中的一个错误。

我已代表您提交了 TestNG 项目的错误,并将在即将发布的版本中修复它 ( 7.5.0)。

缺陷:https ://github.com/cbeust/testng/issues/2611

于 2021-07-08T05:06:42.510 回答