gpt4 book ai didi

java - 如何从testng结果中忽略@BeforeMethod和@AfterMethod?

转载 作者:行者123 更新时间:2023-12-02 02:21:58 25 4
gpt4 key购买 nike

以下是使用 testng 框架创建的示例测试用例,

public class MyTest {

@BeforeMethod
public void beforeMethod() {
}

@Test
public void test1() {
}

@Test
public void test2() {
}

@AfterMethod
public void afterMethod() {
}

}

我正在获取以下 testng-results.xml 文件,

<?xml version="1.0" encoding="UTF-8"?>
<testng-results skipped="0" failed="0" total="2" passed="2">
<reporter-output>
</reporter-output>
<suite name="Surefire suite" duration-ms="15" started-at="2018-01-22T11:17:46Z" finished-at="2018-01-22T11:17:46Z">
<groups>
</groups>
<test name="Surefire test" duration-ms="15" started-at="2018-01-22T11:17:46Z" finished-at="2018-01-22T11:17:46Z">
<class name="com.my.test.MyTest">
<test-method status="PASS" signature="beforeMethod()[pri:0, instance:com.my.test.MyTest@3567135c]" name="beforeMethod" is-config="true" duration-ms="4" started-at="2018-01-22T16:47:46Z" finished-at="2018-01-22T16:47:46Z">
<reporter-output>
</reporter-output>
</test-method> <!-- beforeMethod -->
<test-method status="PASS" signature="test1()[pri:0, instance:com.my.test.MyTest@3567135c]" name="test1" duration-ms="0" started-at="2018-01-22T16:47:46Z" finished-at="2018-01-22T16:47:46Z">
<reporter-output>
</reporter-output>
</test-method> <!-- test1 -->
<test-method status="PASS" signature="afterMethod()[pri:0, instance:com.my.test.MyTest@3567135c]" name="afterMethod" is-config="true" duration-ms="1" started-at="2018-01-22T16:47:46Z" finished-at="2018-01-22T16:47:46Z">
<reporter-output>
</reporter-output>
</test-method> <!-- afterMethod -->
<test-method status="PASS" signature="test2()[pri:0, instance:com.my.test.MyTest@3567135c]" name="test2" duration-ms="0" started-at="2018-01-22T16:47:46Z" finished-at="2018-01-22T16:47:46Z">
<reporter-output>
</reporter-output>
</test-method> <!-- test2 -->
<test-method status="PASS" signature="beforeMethod()[pri:0, instance:com.my.test.MyTest@3567135c]" name="beforeMethod" is-config="true" duration-ms="0" started-at="2018-01-22T16:47:46Z" finished-at="2018-01-22T16:47:46Z">
<reporter-output>
</reporter-output>
</test-method> <!-- beforeMethod -->
<test-method status="PASS" signature="afterMethod()[pri:0, instance:com.my.test.MyTest@3567135c]" name="afterMethod" is-config="true" duration-ms="0" started-at="2018-01-22T16:47:46Z" finished-at="2018-01-22T16:47:46Z">
<reporter-output>
</reporter-output>
</test-method> <!-- afterMethod -->
</class> <!--com.my.test.MyTest -->
</test> <!-- Surefire test -->
</suite> <!-- Surefire suite -->
</testng-results>

请注意,afterMethodbeforeMethod 也被视为测试方法。我想忽略 testng-result.xml 中的这些方法,因为我正在使用此 XML 进行进一步处理。

我有以下问题,

  • 是否有办法避免测试结果 xml 文件中的 @BeforeMethod@AfterMethod 方法?
  • 是否有办法区分测试方法 XML 标记之前和之后的方法?(我可以严格地将我的方法命名为 beforeMethod_Ignore()afterMethod_Ignore() 但这将是一种黑客而不是解决方案)<

我已经浏览了以下链接,但尚未找到任何内容,

最佳答案

据我所知,没有直接的方法可以从 testng-results.xml 文件中排除配置方法。

但总而言之,testng-results.xml 中的当前条目仍然可以让您区分配置方法和测试方法。

对于配置方法,有一个名为 is-config="true" 的额外属性。

请参阅下面的您自己的 xml 文件的摘录

<test-method 
status="PASS"
signature="beforeMethod()[pri:0, instance:com.my.test.MyTest@3567135c]"
name="beforeMethod"
is-config="true"
duration-ms="4"
started-at="2018-01-22T16:47:46Z"
finished-at="2018-01-22T16:47:46Z">
<reporter-output>
</reporter-output>
</test-method> <!-- beforeMethod -->

但是对于常规的@Test方法,属性is-config=true将不可用。

见下文:

<test-method 
status="PASS"
signature="test1()[pri:0, instance:com.my.test.MyTest@3567135c]"
name="test1"
duration-ms="0"
started-at="2018-01-22T16:47:46Z"
finished-at="2018-01-22T16:47:46Z">
<reporter-output>
</reporter-output>
</test-method> <!-- test1 -->

这对您的下游 xml 处理没有帮助吗?

如果这仍然不适合您,那么其他替代方案包括:

  • 您将构建自己版本的 org.testng.IReporter 实现,其中构造此 xml,然后将其作为监听器连接。
  • 您创建一个名为 org.testng.reporters 的包,其中将 org.testng.reporters.XMLReporter 类的内容复制到此包中,更改方法 org.testng.reporters.XMLSuiteResultWriter#getTestResultAttributes 如果该方法不是 @Test 方法,则向该方法添加额外的属性。

关于java - 如何从testng结果中忽略@BeforeMethod和@AfterMethod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48380756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com