【问题标题】: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 的先决条件。

【问题讨论】:

    标签: selenium testng testng.xml testng-annotation-test


    【解决方案1】:

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

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

    这在我看来像是 TestNG 中的一个错误。

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

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

    【讨论】:

      猜你喜欢
      • 2018-03-16
      • 2018-11-21
      • 1970-01-01
      • 2020-02-20
      • 2020-03-26
      • 2011-08-19
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多