testng-results.xml 文件在并行运行测试时被覆盖

如何解决testng-results.xml 文件在并行运行测试时被覆盖

当使用 TestNg 并行运行测试时,报告、emailable 和 testng-results.xml 似乎被覆盖并只显示最后一个线程的结果,而不是所有线程的组合。

示例 testng.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYstem "http://testng.org/testng-1.0.dtd" >
<suite name="Smoke Suite" parallel="tests" thread-count="2">

<groups>
    <run>
        <include name="Smoke"/>
    </run>
</groups>

<test name="1">
    <classes>
        <class name="one">
            <parameter name="executionId" value="UIXTC-"/>
        </class>
    </classes>
</test>

<test name="2">
    <classes>
        <class name="two">
            <parameter name="executionId" value="UIXTC-"/>
        </class>
    </classes>
</test>
</suite>

万无一失的细节

    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.0.0-M4</version>
            <configuration>
                <suiteXmlFiles>
                    <suiteXmlFile>src/com/blueoptima/${MODULE}/suiteXmls/${SUITE}Suite.xml</suiteXmlFile>
                </suiteXmlFiles>
                <threadCount>${THREADS}</threadCount>
                <environmentvariables>
                    <PROPERTIES_FILE>${PROPERTIES_FILE}</PROPERTIES_FILE>
                </environmentvariables>
            </configuration>
    </plugin>

emailable 和 testng-results xml 仅显示来自测试名称“2”的测试方法的结果,即使 testng-results.xml 能够读取所有测试名称

示例 testng-results.xml 输出文件

<?xml version="1.0" encoding="UTF-8"?>
<testng-results ignored="21" total="22" passed="1" Failed="0" skipped="0">
<reporter-output>
</reporter-output>
<suite started-at="2021-01-28T18:06:49 IST" name="Smoke Suite" finished-at="2021-01-28T18:10:40 IST" 
duration-ms="230568">
<groups>
  <group name="sanity">
    <method signature="method 2" name="method 2" class="Class 2"/>
    <method signature="method 3" name="method 3" class="Class 3"/>
  </group> <!-- sanity -->
  <group name="Smoke">
    <method signature="method 1" name="method 1" class="Class 1"/>
    <method signature="method 2" name="method 2" class="Class 2"/>
    <method signature="method 3" name="method 3" class="Class 3"/>
  </group> <!-- Smoke -->
</groups>

<test-method signature="method 1" started-at="2021-01-28T18:09:24 IST" name="method 1" data- 
provider="dataProviderForTest" finished-at="2021-01-28T18:10:32 IST" duration-ms="67731" 
status="PASS">
      <params>
        <param index="0">
          <value>
            <![CDATA[{testCaseId=UIXTC-}]]>
          </value>
        </param>
      </params>
      <reporter-output>
      </reporter-output>
    </test-method>

可以看出,它能够识别smoke套件中的所有3种方法,但仅显示一种方法的结果。

解决方法

作为解决此问题的方法,您可以在 testng xml 中添加 junit 侦听器(捕获所有线程),如下所示

<suite name = "Sample Tests">
<listeners>
    <listener class-name="org.uncommons.reportng.JUnitXMLReporter"/>
</listeners>

并使用简单的命令行实用程序 prettyjunit 将 junit xml 报告转换为汇总的 html。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?