TestNG中的监听
1.使用监听的目的:
Testng虽然提供了不少强大的功能和灵活的选项,但不能解决所有的问题,使用监听器就是用来定制额外的功能以满足我们的需求的;
2.监听器具体实现:
监听器实际上是一些预定义的java接口,用户创建这些接口的实现类(即implements某监听接口,并实现里面的方法),并加入到testng中,testng便会在运行的不同时刻调用这些类中你自定义实现的接口方法,从而实现定制额外的功能;
3.监听器的种类:
3.1 IAnnotationTransformer(修改@Test注释属性)
大多数情况下,在运行时我们不需要改动源代码中定义的注释,但有时需要这样做。这时,我们就需要使用 IAnnotationTransformer 监听器。IAnnotationTransformer 只能用来修改 @Test 注释,如果需要修改其他 TestNG 的注释(比如,@DataProvider, @Factory 以及 @Configuration),需要使用 IAnnotationTransformer2 监听器。IAnnotationTransformer 要求实现 transform 方法,其方法签名如下:
void transform(ITest annotation, Class testClass, Constructor testConstructor, Method testMethod);
annotation 代表就是为 testMethod 定义的 @Test 注释。调用其方法可以更改 @Test 注释属性。例如,下面的代码在运行时将属性 enabled 改为 false 从而禁用了当前的测试方法。
annotation.setEnabled(false);