在 testng.xml 之外使用 IAnnotationTransformer

问题描述 投票:0回答:2

据我了解,IAnnotationTransformer 类在套件启动之前运行,因此它不能像 ITestListener 那样在类级别上声明。所以我总是看到它的用法是将其添加到 testng.xml 文件中:

<suite name = "testSuite" >

    <listeners>
        <listener class-name="TestAnnotationTransformer" />
    </listeners>

(...)


但是,有时我需要从 IDE 运行测试:

right-click -> Run As -> TestNG Test
,因此在执行此操作时,会运行
testng-customsuite.xml
文件,该文件不包含声明的侦听器。

我知道我可以通过Eclipse为TestNG设置一个模板xml文件,但是由于团队中有一些人使用IntelliJ,所以我想避免这样做。

我的问题是: 如何确保我的 IAnnotationTransformer 始终执行,无论我如何执行测试或使用哪个 IDE?

java eclipse testng
2个回答
0
投票

TestNg 的更改注释表明,如果您使用的是 6.9.10 或更高版本,则 IAnnotationTransformer 支持 @Listeners。


0
投票

@Listeners 注解可以包含任何扩展的类 org.testng.ITestNGListener 除了 IAnnotationTransformer。原因 是这些听众需要在这个过程的早期就被了解,所以 TestNG 可以使用它们来重写您的注释,因此您 需要在 testng.xml 文件中指定这些侦听器。

https://testng.org/testng_listeners.html#_testng_listeners

您应该在 testng.xml 文件或 pom.xml(对于 Surefire 插件)文件中指定侦听器。

© www.soinside.com 2019 - 2024. All rights reserved.