据我了解,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?
TestNg 的更改注释表明,如果您使用的是 6.9.10 或更高版本,则 IAnnotationTransformer 支持 @Listeners。
@Listeners 注解可以包含任何扩展的类 org.testng.ITestNGListener 除了 IAnnotationTransformer。原因 是这些听众需要在这个过程的早期就被了解,所以 TestNG 可以使用它们来重写您的注释,因此您 需要在 testng.xml 文件中指定这些侦听器。
https://testng.org/testng_listeners.html#_testng_listeners
您应该在 testng.xml 文件或 pom.xml(对于 Surefire 插件)文件中指定侦听器。