最近看了下testng,的确发觉testng是强大的工具,其中留意到testng中有一个
不错的功能,是在运行时期动态添加注解,先来看下面的例子:
这个是固定了10次的重复测试,但如果要在程序中动态去判断呢,可以实现
IAnnotationTransformer接口
编写自定义类去实现它:
很明显,IAnnotationTransformer接口中,给出了注解,类,构造函数,测试方法四个参数,因此已经足够可以判断进行动态了。再看一个例子:
不错的功能,是在运行时期动态添加注解,先来看下面的例子:
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);
}
}
}