`

testng中动态添加注解

 
阅读更多
  最近看了下testng,的确发觉testng是强大的工具,其中留意到testng中有一个
不错的功能,是在运行时期动态添加注解,先来看下面的例子:

public class Mytest {
  @Test(invocationCount = 10)
    public void verify() {
    // ...
  }}


   这个是固定了10次的重复测试,但如果要在程序中动态去判断呢,可以实现
IAnnotationTransformer接口

public interface IAnnotationTransformer {
  public void transform(ITest annotation, Class testClass, 
                        Constructor testConstructor, Method testMethod);
}



  编写自定义类去实现它:
  
public class MyTransformer implements IAnnotationTransformer {
  public void transform(ITest annotation, Class testClass,
                        Constructor testConstructor, Method testMethod)
  {
    if ("verify".equals(testMethod.getName())) {
      annotation.setInvocationCount(15);
    }
  }
}

   很明显,IAnnotationTransformer接口中,给出了注解,类,构造函数,测试方法四个参数,因此已经足够可以判断进行动态了。再看一个例子:



public class MyTransferTest {
	@Test
	public void test1() { 
		System.out.println("=================test1=============");
	}  

	   
    
	@Test
	public void test2() {  
		System.out.println("=================test2=============");
	} 

}




public class MyTransformer implements IAnnotationTransformer {

	
	@SuppressWarnings("rawtypes")
	@Override
	public void transform(ITestAnnotation annotation, Class testClass,
			Constructor testConstructor, Method testMethod) {
		System.out.println(" MyTransformer  "+testMethod);
		if ("test1".equals(testMethod.getName())) {
			annotation.setInvocationCount(5);
		}

	}

}


    
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics