testNG 套件标记时间戳与 testng-results.xml 中的测试方法时间戳不同

testNG suite tag timestamp differs with test-method timestamp in testng-results.xml

我正在生成一个 Excel 报告来捕获套件执行的开始时间和结束时间,其中框架从 testng-results.xml 读取数据,但是,我注意到套件级别和方法级别的开始时间和完成时间。我的框架在套件级别读取时间,但时间不是我期望的。我希望套件时间与方法级时间相同。

<suite name="Suite" duration-ms="1543927" started-at="2018-03-15T05:53:39Z" finished-at="2018-03-15T06:19:23Z">
    <groups>
    </groups>
    <test name="Regression_test" duration-ms="1543927" started-at="2018-03-15T05:53:39Z" finished-at="2018-03-15T06:19:23Z">
        <class name="com.mpos.android.tests.CnC_TC_08">
            <test-method status="PASS" signature="_init()[pri:0, instance:com.mpos.android.tests.CnC_TC_08@627551fb]" name="_init" is-config="true" duration-ms="2" started-at="2018-03-15T11:31:27Z" finished-at="2018-03-15T11:31:27Z">
                <reporter-output>
                </reporter-output>
            </test-method> <!-- _init -->

这是使用上述代码片段生成的 Excel 报告:

<suite> 标签和 <test-method> 标签 timestamp started-at 属性 说明了一切。

  • <suite> 标签中的 started-at timeatamp 提到 2018-03-15T05:53:39Z
  • <test-method> 标签中的 started-at timeatamp 提到 2018-03-15T11:31:27Z
  • 所以时差5小时37分48秒

分析

这表示:

  • <suite> 标签中提到 2018-03-15T05:53:39Zstarted-at timeatamp 是 GMT
  • <test-method> 标签中提到 2018-03-15T11:31:27Zstarted-at timeatamp 是(可能) IST(印度标准时间)

解决方案

一个快速的解决方案是将您的 TestNG 版本升级到最新的 GA v6.14.2,其中 时间戳 其中两个时间戳都是 GMT.

  • 当前执行的一个例子如下:

    <testng-results skipped="0" failed="0" ignored="0" total="1" passed="1">
      <reporter-output>
      </reporter-output>
      <suite name="Default suite" duration-ms="13267" started-at="2018-03-17T10:50:04Z" finished-at="2018-03-17T10:50:17Z">
        <groups>
        </groups>
        <test name="Default test" duration-ms="13267" started-at="2018-03-17T10:50:04Z" finished-at="2018-03-17T10:50:17Z">
          <class name="Config_property_demo.Index">
        <test-method status="PASS" signature="handling_multiple_windows()[pri:1, instance:Config_property_demo.Index@2bbf4b8b]" name="handling_multiple_windows" duration-ms="13236" started-at="2018-03-17T10:50:04Z" finished-at="2018-03-17T10:50:17Z">
          <reporter-output>
          </reporter-output>
        </test-method> <!-- handling_multiple_windows -->
          </class> <!-- Config_property_demo.Index -->
        </test> <!-- Default test -->
      </suite> <!-- Default suite -->
    </testng-results>
    
  • 虽然我的系统 timestamp (apprx) 在 2018-03-17T16:50:04Z<suite> 标签和 <test-method> 标签都显示 2018-03-17T10:50:04Z